===== 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/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.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 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, 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 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:
- 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.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