===== Tipy a triky ===== ==== Úprava UTF-8 používajícího spřežky ==== * použít program ''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 NFDuconv -f utf8 -t utf8 -x nfc ==== Odstranění BOM ==== sed 's/^\xEF\xBB\xBF//'nebotail --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/'neboperl -i -pe "chomp if eof" * **Všechna písmena v souboru na malá**: cat | sed 's/[[:upper:]]*/\L&/g'Pokud máme pouze ASCII, funguje i toto: cat | 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/( * 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říkazemsource bin/local_python/bin/activatepř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.12source 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: * Instalace pipem pro celý systém:sudo -H pip[3] install ... * Instalace knihoven pro MorphoDiTu * ''numpy'':sudo -H pip3 install numpyPokud 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 tensorflowPokud se to nepovede, taksudo -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žívatsudo -H python3.7 -m pip install ... * Současný postup: * Nainstalujeme ''python3'' a modul ''numpy'' * 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 tensorflowMě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: - zkusit reload, návrat do seznamu projektů - 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.0v 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