Wiki spuštěna 24. 7. 2025

Tipy a triky

Úprava UTF-8 používajícího spřežky

  • použít program norm-utf8:
    norm-utf8
    #!/usr/bin/env python
     
    import sys, unicodedata
     
    if __name__ == '__main__': 
      if len(sys.argv) != 2:
        sys.exit(1)
     
      filename = sys.argv[1]
      f = open(filename, 'r')
      ori = unicode(f.read(), 'utf-8')
      res = unicodedata.normalize('NFC', ori).encode('utf-8')
      f.close
     
      print res,
  • anebo utilitu uconv pro převod do NFC z NFD
    uconv -f utf8 -t utf8 -x nfc

Odstranění BOM

sed 's/^\xEF\xBB\xBF//'

nebo

tail --bytes=+4 text.txt

(pokud je BOM hned na začátku souboru)

Emacs

  • dlouhé řádky: M-x toggle-truncate-lines RET

Triky pro práci v bashi

  • Sežer první řádek souboru, pokud je prázdný:
    sed '1{/^$/d}'
  • Sežer poslední řádek souboru, pokud je prázdný:
    perl -i.bak -pe 'undef $/; s/\n\n$/\n/'

    nebo

    perl -i -pe "chomp if eof"
  • Všechna písmena v souboru na malá:
    cat <file> | sed 's/[[:upper:]]*/\L&/g'

    Pokud máme pouze ASCII, funguje i toto:

    cat <file> | tr '[:upper:]' '[:lower:]'
  • Najdi a seřaď podle času:
    find ./ -name zprh0503 -printf "%T@ %Tc %p\n" | sort -n
  • Zobrazuj datum ve výpisu adresáře ve tvaru YYYY-MM-DD:
    env TIME_STYLE="long-iso"

    (nefungují pak ale aliasy)

  • Zjištění env u běžícího procesu:
    • Nejdřív zjistit PID:
      ps faxu | grep bonito
    • Přečíst proměnné:
      cat /proc/$PID/environ | tr '\0' '\n' | sort
  • Grepni ANSI escape codes (třeba změnu barvy):
    grep -P '\e\[7m \e\[27m'

    grepne inverzní mezeru.

Perl

  • sežrání nového řádku v jednořádkovém programu:
    perl -pe 'undef $/; s/\n/ /g'
  • utf-8 z commandliny:
    PERLIO=:utf8 perl -pe...

    anebo někdy stačí

    perl -C -pe...
  • celý file na upcase:
    perl -pe '$_=uc'
  • první písmeno na upcase:
    perl -C -pe 's/^(.)/\u$1/g'
  • v náhradě regexu použít proměnnou z bashe (dvojité uvozovky a \1 místo $1 v regexu):
    for ff in *; do echo $ff; perl -i.bak -pe "s/(<doc) /\1 id=\"$ff\" /" $ff; done
  • v dotazu použít sytémovou proměnnou:
    perl -i.sav -pe "s:($SYN2020_PREFIX):\1/versions/$mydate/syn2020:" options.json
  • backreference - odkaz na regex použitý dříve v dotazu:
    perl -pe 's/([A-Z]{2})\1/$1$1$1/'
  • nematchující backreference - zde se musí použít lookeahead a lookbehind; nezabírá pozici v regexu:
    perl -pe 's/ V[psq][FIMN][PS].{3}([1-3]).{10}(?!\1)....V//g'

    23-místný tag, (?!\1) znamená nenásleduje \1 a pozice je přečtena teprve další tečkou.

Python

Vytvoření vlastní instalace

  • Vytvoří se podadresář, do kterého se zkopíruje základní instalace:
    python3 -m venv local_python
  • Upraví se .bashrc_profile nebo .profile, aby obsahovaly správné hodnoty proměnných PATH a PYTHONPATH:
    PATH=/home/skoumal/bin/local_python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/syn2020/bin:/usr/local/syn2020/xml2standoff:/home/skoumal/bin
    PYTHONPATH=/home/skoumal/bin/local_python/lib/python3.10/site-packages
  • Prostředí se musí aktivovat příkazem
    source bin/local_python/bin/activate

    před promptem se objeví (local_python)

  • Moduly se instalují takto:
    python -m pip install pandas

Instalace pro MorphoDiTu

  • Potřebujeme python3.10. Nemáme-li ho v systému, použijeme Davidův.
  • Environment vytvoříme v adresáři /usr/loca/cs_tagger.
    sudo bash -l
    /cnk/common/tools/mambaforge/bin/python3.10 -m venv cs_tagger
  • Adresáři /usr/local/cs_tagger změníme vlastníka a vyskočíme z roota.
  • Aktivujeme prostředí a nainstalujeme tensorflow2.12
    source bin/activate
    python -m pip install tensorflow==2.12

Instalace tensorflow pro celý systém

S novějšímy pythony to nejde, pro MorphoDiTu je třeba udělat vlastní instalaci (viz výše).

  • Ve starších systémech fungoval tento postup:

Click to display ⇲

Click to hide ⇱

  • Instalace pipem pro celý systém:
    sudo -H pip[3] install ...
  • Instalace knihoven pro MorphoDiTu
    • numpy:
      sudo -H pip3 install numpy

      Pokud se to nepovede (typicky protože nemáme python3.7), je třeba stáhnout numpy-1.13.3 a instalovat ručně:

      python3 setup.py build -j 4 install
    • tensorflow:
      sudo -H pip3 install tensorflow

      Pokud se to nepovede, tak

      sudo -H pip3 install tensorflow==1.14
  • Instalace python3.7 (a tensorflow):
    apt update
    sudo apt install software-properties-common
    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt update
    sudo apt install python3.7
    sudo -H python3 -m pip install --upgrade pip
    sudo -H python3 -m pip install tensorflow
  • Místo pip radši používat
    sudo -H python3.7 -m pip install ...
  • Současný postup:
    • Nainstalujeme python3 a modul numpy

Click to display ⇲

Click to hide ⇱

  • Nainstalujeme pipx
  • Jako root nainstalujeme moduly:
    sudo bash -l
    export PIPX_HOME=/usr/local; export PIPX_BIN_DIR=/usr/local/bin; pipx install tensorflow==2.12.0
  • Do uživatelského .bashrc přidáme:
    export PYTHONPATH="/usr/local/venvs:$PYTHONPATH"
  • Jako root nainstalujeme moduly:
    sudo bash -l
    pip3 install tensorflow

    Měl by se nainstalovat v /usr/local/lib/python3.10/dist-packages/. Máme-li vyšší verzi pythonu, je třeba (asi) nainstalovat nižší.

LaTeX, PS, PDF

  • Konverze PS obrázku do PDF:
    ps2pdf -dEPSCrop fig.ps
  • Konverze PS obrázku do PNG:
    pstoimg -type png -crop a -trans -interlace -aaliastext -antialias nerad.ps
  • Lokální proměnné v Emacsu, aby se kompilovalo PDF:
    %%% Local Variables: 
    %%% TeX-PDF-mode: t
    %%% TeX-master: t
    %%% End:
  • Posunutí nadpisu nahoru:
    \usepackage{titling}
    \setlength{\droptitle}{-10em}
  • Zvětšení zrcadla u článku:
    \setlength{\topmargin}{-.5in}
    \setlength{\textheight}{10.1in}
    % \setlength{\textwidth}{6.5in}
    % \setlength{\oddsidemargin}{0in}
    % \setlength{\evensidemargin}{0in}
  • Mezery mezi odstavci:
    \setlength{\parskip}{0.25in}

ShareLaTeX

  • Je třeba používat Chrome
  • keybindings musí být none
  • Není vidět zdrojový text:
    1. zkusit reload, návrat do seznamu projektů
    2. vymazat cache v Chromu

Samba na windows

  • Přimountování:
    mount -t cifs //192.168.0.202/Public /mnt/cibulka/PUBLIC -o user=****,password=****,workgroup=UAMKCR,vers=1.0

    v případě, že to nejde, je třeba zkusit user=DOMAIN/user a/nebo vers=2.0.

  • Mountování ve fstab (s nastavením práv):
    //192.168.0.202/Public /mnt/cibulka/Public cifs rw,uid=1001,dir_mode=0777,file_mode=0777,user=****,password=****,workgroup=UAMKCR,vers=1.0 0 0

QR Code
QR Code wiki:user:skoumal:tipy_triky (generated for current page)