Preskočiť na hlavný obsah

Príspevky

Zobrazujú sa príspevky z dátumu november, 2021

Word z HTML v Jave

Tento krátky článok ukazuje ako pomocou knižnice docx4j vytvoriť dokument typu docx (Word). Potrebné knižnice môžeme nájsť na webe Docx4Java.org alebo v centrálnom repozitári mavenu (tuto cestu som si zvolil aj ja). Maven dependency: <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>6.0.1</version> <type>jar</type> </dependency> <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j-ImportXHTML</artifactId> <version>6.0.1</version> </dependency> Vzorové použitie Vytvorenie docx dokumentu s jednou tabuľkou: package net.adamjak.tomas.htmltodocx; import java.io.File; import javax.xml.bind.JAXBException; import org.docx4j.convert.in.xhtml.XHTMLImporterImpl; import org.docx4j.openpackaging.exceptions.Docx4JException; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.ope

Obnova vymazaných suborov

Mnohokrát som sa stretol s otázkou či je možné obnoviť vymazané súbory na disku, na USB kľúči či na pamäťovej karte. Moja odpoveď je vždy rovnaká: NIE! Áno, ja viem klamať sa nemá ale je to lepšie pre obe strany. Ja sa s tým nemusím hrať a prehľadávať kadejaké staré USB disky a na druhej strane ľudia nie sú sklamaný keď sa mi to nepodarí. Teraz keď vieme, že to ide tak si poďme ukázať jednoduchý spôsob ako sa to dá robiť. Počas ukážky si stiahnem logo softvéru TestDisk ktoré následne vymažem a pokúsim sa ho opäť obnoviť. Použijem na to softvér TestDisk . user@pc:/media/user/USB $ wget http://www.cgsecurity.org/mw/images/Testdisklogo_clear_100.png --2017-02-10 23:03:29-- http://www.cgsecurity.org/mw/images/Testdisklogo_clear_100.png Prevádza sa www.cgsecurity.org (www.cgsecurity.org) na IP adresu... 193.168.50.236 Pripájanie k www.cgsecurity.org (www.cgsecurity.org)|193.168.50.236|:80... pripojené. HTTP požiadavka odoslaná, čakám na odpoveď... 200 OK Dĺžka: 1726 (1,7K) [imag

Príklad paralelného výpočtu v Jave s využitím Fork/Join frameworku

JDK 7 prišlo s novou možnosťou paralelného programovania. Java bola rozšírené o balíček java.util.concurrent v ktorom sa nachádzajú nové triedy ktoré umožňujú jednoduchšie paralelné programovanie nad viac ako jedným (jednovláknovým) jadrom procesora. Hlavné triedy frameworku Fork/Join ktorý uľahčuje paralelné programovanie sú: ForkJoinTask<V> – abstraktná trieda definujúca úlohu ForkJoinPool – trieda riadiaca vykonávanie úloh typu ForkJoinTask<V> RecursiveAction – podtrieda triedy ForkJoinTask<V> určená pre úlohy nevracajúce hodnoty RecursiveTask<V> – podtrieda triedy ForkJoinTask<V> určená pre úlohy vracajúce hodnoty Príklad V príklade bude zotrieďované pole celých čísel troma triediacimi algoritmami (Bubble sort, Selection sort a Insertion sort) so zložitosťou O(n 2 ) . Na lepšiu ukážku budú použité len 2 jadrá procesora čím dosiahneme, že jedna z úloh bude musieť čakať na dokončenie inej. Trieda Main.java : import java.util.ArrayList;

XSLT transformacia v Jave

XSLT ( Extensible Stylesheet Language Transformations ) je jazyk určený na transformovanie XML dokumentov na iné XML dokumenty, alebo iné formáty ako napríklad HTML pre web, obyčajný text alebo do XSL Formatting Objects, ktoré môžu byť zkonvertované do iných formátov, ako napríklad PDF, PostScript, RTF či PNG. Originálny dokument nie je zmenený, namiesto toho sa vytvorí nový dokument na základe už existujúceho. Vstupné dokumenty sú zväčša typu XML, ale môže byt použité čokoľvek, z čoho procesor dokáže zostaviť XQuery a XPath Data Model. [1] V jednoduchom príklade ukazujem XSLT transformaciu pomocou programovacieho jazyka Java. Súbor: library.xml <?xml version="1.0" encoding="utf-8" ?> <library> <book> <id>1</id> <name>Java 7</name> </book> <book> <id>2</id> <name>Java 8</name> </book> </library> Súbor: library_stylesheet

PostgreSQL - inštalácia a základy

V tomto článku popíšem postup inštalácie PostgreSQL pre rôzne platformy. Microsoft Windows XP a novšie Stiahnite inštalačný program z oficiálnych stránok PostgreSQL ( http://www.postgresql.org/download/windows/ ) Spustite inštalačný program a sledujte pokyny inštalátora. Pozor!!! Ak používate súborový systém FAT32 inštalátor nevytvori systémovú databázu a je potrebné jú následne vytvoriť ručne pomocou príkazu initdb . Príkaz initdb nikdy nespúšťajte ako administrátor Chybne ak je užívateľ administráto C:\PostgreSQL\bin > initdb -D ../data The program " postgres " is needed by initdb but was not found in the same directory as "C:\PostgreSQL\bin /initdb". Check your installation . Správne: C:\PostgreSQL\bin > runas /user:postgres "c:/postgresql/bin/initdb -D C:/PostgreSQL/data" alebo C:\PostgreSQL\bin > runas /user:postgres "c:/postgresql/bin/initdb -D C:/PostgreSQL/data -E UTF -8" V prípade, že reinštalujete postgresql a z

Formátovanie poznámok pod čiarov v LaTeXe

Najjednoduchšou cestou je použitie hand nastavení z balíčka footmisc . Pre nastavenie odsadenie použijeme voľbu \fotnotemargin nasledovne: \documentclass{article} \usepackage{lipsum} \usepackage[hang]{footmisc} \setlength\footnotemargin{10pt} \begin{document} \null\vfill % iba pre príklad \lipsum*[4]Test\footnote{\lipsum[4]} \end{document} Citované z : http://tex.stackexchange.com/questions/126877/how-can-i-align-a-multiple-line-footnote-text-right-to-the-footnote-mark#126878

Ako riadkovanie v LaTeXe

Už dlhšiu dobu sa stále vracia k tomu ako nastavovať riadkovanie v LaTeX-e. Vždy som to hľadal a strávil som nad tým veľa času. Dnes som však našiel asi najjednoduchší spôsob nastavovania riadkovania. \renewcommand{\baselinestretch}{1.5} Tento príkaz nastavuje riadkovanie na 1.5

Ako umiestniť body na kružnicu

Problém ako umiestniť body po na kružnici som riešil nedávno a vôbec to nie je zložité. Potrebujeme k tomu 3 údaje a to počet bodov, šírku a výšku plátna na ktoré ideme body umiestňovať. Prvú vec ktorú si spočítame sú okraje kružnice. V mojom uvedenom príklade je to veľkosť plátna mínus 10%. Ďalej si určíme uhol alfa ktorý vypočítame ako 2 × π a to celé deleno počet vrcholov. Ako ďalšiu vec si určíme stred kružnice a polomer. A na koniec už len prechádzame počtom vrcholov a jednoduchou matematickou operáciou pre x -ovú súradnicu je to stred + (polomer × cos(poradie vrchola × uhol alfa)) a pre y -ovú je postup rovnaký avšak zmeníme funkciu cos() na funkciu sin() počítame už konkrétne body. Realizácia v Jave /** * placePointsOnCircle - Regular distribution of points on a circle * * @author Tomas Adamjak <thomas @ adamjak.net> * * @see http://thomas.adamjak.net/2014/03/27/ako-umiestnit-body-na-kruznicu/ * * @param numberOfPoint (Integer) - Number of points that we

Práca s XML v Jave

Ako pracovať (čítať, zapisovať dáta) v Jave z XML? Túto otázku som si kládol už dlhšiu dobu a pred nedávnom som sa rozhodol, že si nejakú technológiu osvojím. Na internete som sa dočítal, že najjednoduchším spôsobom je použiť technológiu SAX a pre zložitejšie dokumenty DOM. Pustil som sa do toho. Prvú vec ktorú som si všimol a ktorá mi na oboch technológiách vadila bolo, že to vôbec nebolo jednoduché. Keď pracujem s XML v jazyku PHP tak použijem triedu SimpleXMLElement ktorá má parametrický konštruktor kde odovzdám cestu k XML súboru a viacej sa nestarám o nič. K elementom pristupujem ako k atribútom triedy a iterujem ich ako pole. Prečo to tak nie je aj v Jave? To bola pre mňa záhadná otázka až pokiaľ som neobjavil technológiu JAXB. Keď som prišiel na to ak JAXB funguje hneď som začal hľadať na internete nejaký tutoriál ako sa ho naučiť. A podarilo sa. http://www.mkyong.com/java/jaxb-hello-world-example/ Jedno však v tomto tutoriále nie je spomenuté. A to, že ta trieda Cus

MathJax: Vkladanie matematických vzorcov na stránku

Asi 2 roky dozadu som tu písal o jazyku MathML. Jedná sa o jazyk z rodiny XML ktorý nám umožňuje vkladať na web matematické vzorce. Tento jazyk má však jednu nevýhodu a to, že aj na zapísanie jednoduchého a relatívne malého vzorca musíme napísať veľa neprehľadných riadkov. Tento problém zdá sa rieši MathJax . MathJax taktiež vkladá do stránky matematické vzorce ale dokáže ich vyrenderovať aj napríklad zo syntaxe ktorú používa LaTeX či AsciiMath a ta je oveľa kratšia a čitateľnejšia ako MathML. Použitie si ukážeme na jednoduchom zápise kvadratickej rovnice a vzorca slúžiaceho na jej výpočet. Ak $a \ne 0$, potom \(ax^2 + bx + c = 0\) má práve 2 korene ktoré vypočítame nasledovne: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ Použitie LaTeX-u <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>MathJax LaTeX Test</title> <script type="text/x-mathjax-config"> MathJax.Hub.Config({tex2jax: {in

Linuxový príkaz ZIP, príklady pre kompresiu a dekompresiu

Veľmi často vytvárame komprimované dáta pomocou archívu zip a tak isto často ich aj s týchto archívov čítame. V Linuxe máme možnosť rovnako ako vo Windowse či MAC OS vytvárať archív zip v grafickom prostredí. Ja sa dnes však budem venovať tomu ako to spraviť pomocou príkazového riadku. Vytvoril som si nejaký priečinok test v ktorom som si vytvoril 2 textové súbory na ktorých budem ukazovať nejaké príklady. tomas@tomas:~/Dokumenty/tmp/test$ ls -lh celkom 8,0K -rwxr----- 1 tomas tomas 10 jan 9 17:03 hello -rwxr----- 1 tomas tomas 562 jan 9 17:03 lipsum Ako vytvoriť archív zip Vytvorenie archívu zip je veľmi jednoduché. Najprv zadáme príkaz zip potom názov archívu a následne súbor(y) ktoré chceme do archívu vložiť. Takto: tomas@tomas:~/Dokumenty/tmp/test$ zip archiv.zip lipsum hello adding: lipsum (deflated 45%) adding: hello (stored 0%) ... v priečinku nám pribudol archív archiv.zip . Teraz si ukážeme ako súbory z archívu vybrať Vybranie súborov alebo aj dekompresia

Ako zrušiť odskok prvého riadku v LaTeXe

Dnes som riešil problém ktorý som si myslel, že nebude žiadnym problémom ale opak bol pravdou. Potreboval som aby mi pri jednoduchom LaTeX -ovom dokumente automaticky neodsadzovalo prvý riadok odstavca. Asi po hodinke hľadania som na to prišiel a naozaj to bolo veľmi jednoduché. Do hlavičky dokumentu stačilo napísať tento riadok: \setlength{\parindent}{0in} Toto však vytvorilo jeden problém s ktorým som nepočítal. Odstavce sú spolu a bez odsadenia prvého riadku čo znamená, že text je dosť neprehľadný. Potreboval som teda vyriešiť ďalší problém a to ako pred alebo za odstavec vložiť nejakú medzeru. Riešenie bolo opäť veľmi jednoduché. \setlength{\parskip}{5mm}

MathML: Matematický značkovací jazyk

MathML je matematický značkovací jazyk založený na XML. V súčasnej dobe je súčasťou dokumentov W3C, ako jazyk slúžiaci na zápis matematických a iných príbuzných vzorcov. Tak ako všetko od W3C aj MathML sa dá použiť pri vytváraní internetových stránok. Máme 2 možnosti ako definovať tento jazyk v našom HTML dokumente: <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow>...</mrow> </math> <body xmlns:m="http://www.w3.org/1998/Math/MathML"> ... <m:math><m:mrow>...</m:mrow></m:math> ... </body> Aj keď sa nám môže MathML zadať oproti syntaxi TeXu objemnejší nie je to zlé, práve naopak XML štruktúra nám umožňuje veľmi rozsiahle využitie. Oficiálnu dokumentáciu k tomuto jazyku nájdete na : http://www.w3.org/TR/MathML3/ Ukážkové kódy MathML <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <msup> <mi>a</mi> <mn>2</mn> </

Ako na Apache Tomcat

Včera som sa rozhodol napísať si svoj prvý servrlet a prvú otázku ktorú som si položil bola ktorý webový aplikačný server si mám zvoliť Apache Tomcat alebo GlassFish. Keďže môj otec už dlhšiu dobu používa GlassFish tak som sa preň rozhodol aj ja. Netušil som však, že ma čakajú problémy ktoré ma donútia zmeniť moju voľbu na Tomcat. Teraz ukážem 2 spôsoby ako Apache Tomcat nainštalovať na systéme Fedora, RHEL alebo CentOS s tým, že by to malo fungovať aj pod inými distribúciami. 1. Apache Tomcat nezávislý od Eclipse Spustíme si terminál ako používateľ root. A - Inštalácia JDK Poslednú verziu JDK je možné stiahnuť tu: http://www.oracle.com/technetwork/java/javase/downloads/index.html Ako prvé vytvoríme nový priečinok /usr/java a presunieme sa doň. root@linux ~ $ mkdir /usr/java root@linux ~ $ cd /usr/java root@linux java $ Do novo vytvoreného priečinka stiahneme JDK a rozbalíme. root@linux java $ tar -xzf jdk-7u51-linux-x64.tar.gz Toto nám vytvorilo priečinok /usr/java/jdk1

Java md5

Dlho som sa rozčuľoval prečo nie je v Jave funkcia ktorá by mi vygenerovala z reťazca znakov md5 odtlačok. Nakoniec som to vzdal a začal dom hľadať po internete, že ako mám spraviť nejakú takú funkciu. Samozrejme, že som našiel kopec možnosti ako to spraviť a tu je jedna z nich: import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; public class hash { public static String md5Java(String message) { String digest = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hash = md.digest(message.getBytes("UTF-8")); StringBuilder sb = new StringBuilder(2 * hash.length); for (byte b : hash) { sb.append(String.format("%02x", b &amp; 0xff)); } digest = sb.toString(); } catch (UnsupportedEncodingException ex) {

Ako zálohovať všetky Postgre databázy naraz

Už dlhšiu dobu som si lámal hlavu ako zálohovať všetky PostgreSQL databázy v jednom kroku tak aby som to nemusel robiť po jednej. Na internete som našiel jedného chlapíka ktorý práve o tomto blogoval a ukázal tam aj riešenie. Riešením tohto problému je jednoduchý shell skript ktorý zavolá root databázy (zväčša postgres). A tento skript vytvorí z každej databázy súbor s príponou .backup. Shell skript ktorý som spomínal v mojom prípade nazvaný pg-backup-all-db.sh. #!/bin/sh # Posrgres executables CMD_PSQL=/usr/bin/psql CMD_DUMP=/usr/bin/pg_dump # prefix for backup filenames NAME_PREFIX=`date +%F` # directory where to save the database backup NAME_BACKUP_DIR=/srv/www/pgbackup/data # age of the older file to keep (in days) NB_DAYS_TO_KEEP=7 # Start backuping Databases=`$CMD_PSQL -tq -d template1 -c "select datname from pg_database"` echo "Starting backup of all databases..." for current_db in `echo $Databases`  do   if [ "$current_db" != "template0&qu

Ako previesť .mp3 súbor do .wav v Linuxe

Počas Vianočných sviatkov som skúmal ako previesť pesničky ktoré mám v počítači vo formáte MP3 do formátu audio CD ktorý by bez problémov načítala aj moja postaršia veža. Samozrejme našiel som veľa spôsobov avšak asi najjednoduchším bol veľmi jednoduchý shell skript. Inštalácia je veľmi jednoduchá: # Ubuntu sudo apt-get install mpg123 # Fedora yum install mpg123 Používať tento shell skript sa dá dvoma spôsobmi. Buď budete prevádzať každý MP3 súbor samostatne pomocou tohto príkazu: mpg123 -w vystup.wav vstup.mp3 Alebo využijete jednoduchú funkciu ktorú vložíte do súboru .bashrc v vašom koreňovom adresári. mp3towav(){      [[ $# -eq 0 ]] && { echo "mp3wav mp3file"; exit 1; }      for i in "$@"      do           # create .wav file name           local out="${i%/*}.wav"           [[ -f "$i" ]] && { echo -n "Processing ${i}..."; mpg123 -w           "${out}" "$i" &>/dev/null && echo "don