home.social

#funkcija — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #funkcija, aggregated by home.social.

  1. Prieš keletą dienų naršydamas Mastodone pastebėjau kažkieno pabūstintą įdomų paveiksliuką, kuriame buvo vizualiai atvaizduotas metų progresas procentais. Šis vaizdas mane įkvėpė sukurti paprastą „Bash“ funkciją, kurią galėčiau integruoti į savo kasdieninius skriptus. Ši funkcija man padeda stebėti metų progresą, rodyti jį terminalo lange ir naudoti įvairiuose backup bei informacijos išvedimo procesuose.

    Funkcijos Aprašymas

    Pateikiu galutinę funkcijos versiją, kurią galite lengvai integruoti į savo „Bash“ skriptus:

    #!/bin/bashmetu_progresas() {    local bar_length=${1:-40}  # Numatytoji juostos ilgis yra 40, jei nenurodytas kitas    local filled_color="\e[1;33m"  # Ryškiai geltona spalva užpildytiems simboliams    local empty_color="\e[37m"     # Balta spalva tuštiems simboliams    local reset_color="\e[0m"      # Numatytoji spalva    # Gauti dabartinę dieną (metų dienos numeris)    current_day=$(date +%-j)    # Gauti iš viso metų dienų skaičių    total_days=$(date -d "Dec 31" +%-j)    # Apskaičiuoti metų progresą procentais    progress=$((current_day * 100 / total_days))    # Apskaičiuoti užpildytų ir tuščių simbolių skaičių    filled_chars=$((progress * bar_length / 100))    open_chars=$((bar_length - filled_chars))    # Sukurti vizualią juostą    bar=$(printf "%-${filled_chars}s" "#" | tr ' ' '#')    bar+=$(printf "%-${open_chars}s" "." | tr ' ' '.')    # Parodyti rezultatą su spalvomis    echo -e "Metų progresas: ${filled_color}[${bar:0:filled_chars}${empty_color}${bar:filled_chars}] ${reset_color}${progress}%"}metu_progresas

    Kaip funkcija veikia?

    1. Juostos ilgis: Funkcija priima vieną neprivalomą argumentą bar_length, kuris nustato vizualinės juostos ilgį. Jei argumentas nenurodytas, naudojama numatytoji reikšmė – 40 simbolių.
    2. Spalvų parinktys: Naudojamos trys spalvų parinktys: ryškiai geltona (filled_color) užpildytiems simboliams, balta (empty_color) tuštiems simboliams ir numatytoji spalva (reset_color) rezultatui atstatyti.
    3. Dabartinė diena: Funkcija naudoja date +%-j, kad gautų dabartinę dieną metų dienos formatu.
    4. Bendras dienų skaičius: Naudojama date -d "Dec 31" +%-j, kad nustatytų bendrą dienų skaičių metuose.
    5. Progresas procentais: Apskaičiuojamas metų progresas procentais, naudojant formulę current_day * 100 / total_days.
    6. Simbolių skaičius: Apskaičiuojamas užpildytų (filled_chars) ir tuščių (open_chars) simbolių skaičius, remiantis juostos ilgiu ir progreso procentais.
    7. Vizuali juosta: Naudojant printf ir tr, sukuriama vizuali juosta iš užpildytų ir tuščių simbolių.
    8. Rezultato atvaizdavimas: Rezultatas parodomas terminale su spalvota juosta ir procentiniu progreso atvaizdavimu.

    Ką Dar Galima Patobulinti?

    1. Konfigūruojamos spalvos: Leisti vartotojui pasirinkti spalvas per funkcijos parametrus.
    2. Dinaminis atnaujinimas: Pridėti ciklą, kuris dinamiškai atnaujintų progresą realiuoju laiku (pvz., kas valandą ar kas dieną).
    3. Integracija su kitais skriptais: Funkciją integruoti į didesnius skriptus ar sistemas, kurios reikalauja progreso atvaizdavimo.
    4. Progresas per kitus laiko intervalus: Pritaikyti funkciją, kad rodytų ne tik metų, bet ir mėnesių ar savaičių progresą.
    5. Grafinių elementų palaikymas: Integruoti grafiką ar kitus vizualinius elementus, naudojant ASCII meną ar kitas terminalo grafikos galimybes.

    Išvada

    Ši funkcija „metu_progresas“ yra paprastas, bet veiksmingas būdas vizualizuoti metų progresą „Bash“ skriptuose. Ji gali būti lengvai pritaikoma ir išplėtojama, atsižvelgiant į specifinius poreikius. Tikiuosi, kad ši funkcija bus naudinga tiek jūsų kasdieniams skriptams, tiek ir didesniems projektams. Jei turite kokių nors klausimų ar pasiūlymų, nedvejodami palikite komentarą žemiau!

    https://funkcijos.wordpress.com/2024/05/28/metu-progresijos-vizualizavimas-bash-skriptuose/

    #funkcija #progresas

  2. Iššifruojame užšifruotus failus: Naudingas scenarijus su patobulinimo idėjomis

    Ankstesniame įraše, užšifravome svarbius failus naudodami gpg įrankį. Dabar atėjo laikas juos iššifruoti ir pasiekti turinį. Šiame įraše pristatysime scenarijų, kuris padės lengvai naršyti užšifruotus failus ir juos iššifruoti. Taip pat aptarsime galimus panaudojimo būdus, patobulinimus ir idėjas, kaip šį scenarijų pritaikyti savo poreikiams.

    Scenarijaus veikimas

    Scenarijus susideda iš trijų pagrindinių funkcijų:

    1. show_dirs(): Ši funkcija parodo visų katalogų, esančių jūsų namų aplanke, sąrašą. Galite pasirinkti bet kurį iš šių katalogų, kad pereitumėte prie jo.
    2. show_encrypted_files(): Pasirinkus katalogą, ši funkcija parodo visų jame esančių užšifruotų failų (su .gpg plėtiniu) sąrašą. Galite pasirinkti bet kurį iš šių failų, kad jį iššifruotumėte.
    3. decrypt_file(): Ši funkcija paprašys jūsų įvesti GPG rakto slaptažodį ir tada iššifruos pasirinktą failą. Sėkmingai iššifravus, failas bus be .gpg plėtinio.

    Naudojimo būdai

    Šį scenarijų galite naudoti įvairiems tikslams:

    • Lengvai naršyti užšifruotus failus savo namų aplanke.
    • Pasirinkite ir iššifruokite konkrečius failus, kurių jums reikia.
    • Automatizuokite iššifravimo procesą, jei turite daug užšifruotų failų.

    Patobulinimai

    Scenarijų galima patobulinti keliais būdais:

    • Pridėti galimybę iššifruoti kelis failus vienu metu.
    • Leidžiama pasirinkti išvesties katalogą iššifruotiems failams.
    • Integruoti klaidų tvarkymo mechanizmus, kad būtų rodomi aiškesni pranešimai apie problemas.
    • Sukurti grafišką sąsają patogesniam naudojimui.

    Idėjos pritaikymui

    Šį scenarijų galite pritaikyti savo poreikiams įvairiais būdais:

    • Pakeiskite jį, kad iššifruotų kitus failų tipus, pvz., vaizdus ar archyvus.
    • Integruokite jį su kitomis savo naudojamomis programomis ar scenarijais.
    • Sukurkite savo funkcijas, kad scenarijus atitiktų jūsų specifinius poreikius.

    Apibendrinimas

    Šis scenarijus yra naudingas įrankis, skirtas lengvai iššifruoti užšifruotus failus. Jį galima patobulinti ir pritaikyti įvairiais būdais, kad jis atitiktų jūsų poreikius.

    Nepamirškite reguliariai kurti atsargines kopijas ir laikyti savo GPG raktą saugioje vietoje!

    #!/bin/bash# Funkcija, kuri rodo katalogų sąrašą $HOME direktorijojeshow_dirs() {    cd "$HOME" || exit 1    # Naudojame find, kad rastume tik neslaptus katalogus pirmame lygyje    dirs=($(find . -maxdepth 1 -type d -not -path '*/\.*'))    dirs=("${dirs[@]:1}") # Pašaliname pirmąjį elementą (.) kuris yra $HOME    dir_names=()    for dir in "${dirs[@]}"; do        dir_names+=("$(basename "$dir")")    done    select dir in "${dir_names[@]}"; do        if [ -d "$dir" ]; then            cd "$dir" || exit 1            break        else            echo "Netinkamas pasirinkimas, bandykite dar kartą."        fi    done}# Funkcija, kuri rodo užšifruotų failų sąrašą pasirinktame katalogeshow_encrypted_files() {    encrypted_files=(*.gpg)    if [ "${#encrypted_files[@]}" -eq 0 ]; then        echo "Šiame kataloge nėra užšifruotų failų."        exit 1    fi    select encrypted_file in "${encrypted_files[@]}"; do        if [ -f "$encrypted_file" ]; then            break        else            echo "Netinkamas pasirinkimas, bandykite dar kartą."        fi    done}# Funkcija, kuri dešifruoja pasirinktą failądecrypt_file() {    echo "Įveskite GPG rakto slaptažodį:"    read -s password    gpg --output "${encrypted_file%.gpg}" --decrypt --batch --yes --passphrase "$password" "$encrypted_file"    if [ $? -eq 0 ]; then        echo "Failas '$encrypted_file' sėkmingai iššifruotas."    else        echo "Klaida dešifruojant failą '$encrypted_file'."    fi}# Pagrindinis scenarijaus kodasshow_dirsshow_encrypted_filesdecrypt_file

    https://funkcijos.wordpress.com/2024/05/27/ka-uzsifravome-ta-is-issifruosim/

    #funkcija #gpg