Webový optimalizační visualizér
Dokumentace pro provoz a nasazení aplikace.
1. O projektu a systémové požadavky
Aplikace běží v izolovaném virtuálním prostředí Debian 13 (XFCE) s optimalizačním výpočetním jádrem v jazyce Julia. Virtuální stroj je plně autonomní a po importu funguje offline bez nutnosti síťového připojení.
- Podporovaný operační systém hostitele: Windows 10/11, macOS, nebo Linux
- Virtualizační software: Oracle VM VirtualBox (verze 7.0+)
- Hardwarové nároky: alespoň 8 GB RAM (doporučeno 12+ GB), 20 GB volného místa na disku a povolená virtualizace v BIOS/UEFI (Intel VT-x / AMD-V).
2. Varianta A: Rychlé spuštění z hotového obrazu (.ova)
Nejjednodušší cesta pro studenty a výuku. Na hostitelském počítači není potřeba instalovat jazyk Julia ani nastavovat žádné knihovny:
- Nainstalujte a spusťte VirtualBox.
- V horním menu zvolte Soubor → Importovat appliance... (klávesová zkratka
Ctrl + I). - Klepněte na ikonu žluté složky a vyberte stažený soubor
Debian-OptVisualizer.ova. - V souhrnném dialogu parametrů ponechte výchozí nastavení a klepněte na Dokončit (nebo Importovat). Rozbalení virtuálního disku trvá přibližně 1–3 minuty.
- Po dokončení importu vyberte v levém seznamu stroj
Debian-OptVisualizera spusťte jej zeleným tlačítkem Spustit.
3. Práce s aplikací a ovládání
Virtuální stroj je nakonfigurován pro okamžitý start – systém se automaticky přihlásí přímo na pracovní plochu uživatele student bez dotazu na heslo.
První spuštění vizualizéru
Na ploše dvakrát klepněte na ikonu Optimization Visualizer.
http://localhost:8080. Během načítání neklikejte na ikonu opakovaně.
Řešení problémů a restart aplikace
Pokud se numerický výpočet zacyklí nebo webové rozhraní přestane reagovat:
- Dvakrát klepněte na ploše na ikonu Restart Visualizer.
- Skript automaticky ukončí zaseknuté procesy na pozadí a provede čistý start backendu i nového okna prohlížeče.
4. Ukončení práce
Po skončení práce virtuální stroj bezpečně vypněte kliknutím na tlačítko v pravém rohu lišty XFCE a volbou Vypnout (Shut Down).
5. Varianta B: Replikace prostředí a developing (pro správce a vývojáře)
Následující postup slouží k sestavení čistého systému Debian 13 od nuly.
Krok 5.1: Založení virtuálního stroje a instalace OS
- Vytvořte 64-bitový virtuální stroj Debian s alespoň 4 GB RAM, 2 jádry CPU a 25GB diskem.
- Jako instalační médium použijte oficiální Debian 13 (Trixie) Netinst ISO.
- V průvodci instalací vytvořte uživatele
student. - V kroku volby softwaru zaškrtněte pouze
Debian desktop environment,... Xfceastandard system utilities.
Krok 5.2: Systémová práva a potřebné balíčky
Po prvním přihlášení otevřete terminál a povolte uživateli student oprávnění správce bez hesla:
su -
usermod -aG sudo student
echo "student ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/student-nopasswd
chmod 0440 /etc/sudoers.d/student-nopasswd
exit
Nainstalujte vývojové nástroje a grafické doplňky:
sudo apt update
sudo apt install -y build-essential dkms linux-headers-$(uname -r) git patchelf zenity curl firefox-esr
Krok 5.3: Instalace Guest Additions a vypnutí asistence
Vložte do virtuální mechaniky obraz přídavků (Zařízení → Vložit obraz CD s přídavky pro hosta...) a zkompilujte ovladače pro dynamické škálování obrazovky:
sudo mkdir -p /media/cdrom
sudo mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run
sudo umount /media/cdrom
Odstraňte čtečku obrazovky (Orca) a hlasový syntezátor pro tichý chod systému:
sudo apt purge -y orca speech-dispatcher
xfconf-query -c xfce4-session -p /general/AssistiveTechnologies -s false 2>/dev/null
Krok 5.4: Konfigurace autologinu a zrychlení zavaděče
# Nastavení automatického přihlášení uživatele student
sudo groupadd -r autologin 2>/dev/null || true
sudo gpasswd -a student autologin
sudo sed -i 's/^#autologin-user=.*/autologin-user=student/' /etc/lightdm/lightdm.conf
sudo sed -i 's/^#autologin-user-timeout=.*/autologin-user-timeout=0/' /etc/lightdm/lightdm.conf
# Nulový odpočet zavaděče GRUB pro okamžitý start
sudo sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' /etc/default/grub
sudo update-grub
Krok 5.5: Příprava prostředí Julia a optimalizačního repozitáře
# 1. Instalace oficiálního správce Juliaup
curl -fsSL https://install.julialang.org | sh -s -- --default-channel 1.10.2 -y
export PATH="$HOME/.juliaup/bin:$PATH"
# 2. Stažení repozitáře projektu
cd ~
git clone https://github.com/TomasHalmazna/optimization_visualizer.git
cd ~/optimization_visualizer/backend
# 3. Ošetření spustitelného zásobníku u starších C knihoven
patchelf --clear-execstack ~/.julia/juliaup/julia-1.10.2+0.x64.linux.gnu/lib/julia/libopenlibm.so 2>/dev/null || true
# 4. Předkompilace balíčků pro offline provoz
julia +1.10.2 --project=. -e 'using Pkg; Pkg.instantiate(); Pkg.precompile()'
Krok 5.6: Skripty a zástupci na ploše
Vytvořte spouštěcí skript ~/start_app.sh se stavovým oknem Zenity:
cat << 'EOF' > ~/start_app.sh
#!/bin/bash
export PATH="$HOME/.juliaup/bin:$HOME/.local/bin:$PATH"
if timeout 1 bash -c "/dev/null; then
firefox http://localhost:8080 &
exit 0
fi
notify-send "Optimization Visualizer" "Startuji backend Julie..." -i preferences-system
(
echo "10" ; echo "# Inicializace prostředí..."
cd /home/student/optimization_visualizer/backend
if ! pgrep -f "server.jl" > /dev/null; then
julia +1.10.2 --project=. server.jl > /home/student/server.log 2>&1 &
fi
echo "30" ; echo "# Načítání optimalizačních modulů..."
SERVER_UP=0
for i in {1..90}; do
if timeout 1 bash -c "/dev/null; then
SERVER_UP=1
break
fi
PROGRESS=$(( 30 + (i * 65 / 90) ))
echo "$PROGRESS"
sleep 1
done
if [ $SERVER_UP -eq 1 ]; then
echo "100" ; echo "# Otevírám aplikaci..."
sleep 1
else
echo "# Server neodpovídá. Prohlédněte ~/server.log"
sleep 3
exit 1
fi
) | zenity --progress --title="Optimization Visualizer" --text="Spouštění..." --percentage=0 --auto-close --no-cancel --width=400 2>/dev/null
if timeout 1 bash -c "/dev/null; then
firefox http://localhost:8080 &
fi
EOF
chmod +x ~/start_app.sh
Vytvořte restartovací skript ~/restart_app.sh a zástupce na ploše:
cat << 'EOF' > ~/restart_app.sh
#!/bin/bash
pkill -f "server.jl"
sleep 2
/home/student/start_app.sh
EOF
chmod +x ~/restart_app.sh
# Vytvoření ikon na ploše
cat << 'EOF' > ~/Desktop/OptimizationVisualizer.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Optimization Visualizer
Comment=Spustit optimalizační aplikaci
Exec=/home/student/start_app.sh
Icon=system-run
Terminal=false
StartupNotify=true
EOF
cat << 'EOF' > ~/Desktop/RestartVisualizer.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Restart Visualizer
Comment=Restartovat aplikaci
Exec=/home/student/restart_app.sh
Icon=view-refresh
Terminal=false
StartupNotify=true
EOF
chmod +x ~/Desktop/*.desktop
Krok 5.7: Vyčištění prostředí XFCE a příprava na export
# 1. Nastavení pouze jedné pracovní plochy
xfconf-query -c xfwm4 -p /general/workspace_count -s 1
# 2. Skrytí výchozích systémových ikon na ploše (Koš, Domů, Disky)
xfconf-query -c xfce4-desktop -p /desktop-icons/file-icons/show-home -n -t bool -s false
xfconf-query -c xfce4-desktop -p /desktop-icons/file-icons/show-trash -n -t bool -s false
xfconf-query -c xfce4-desktop -p /desktop-icons/file-icons/show-filesystem -n -t bool -s false
xfconf-query -c xfce4-desktop -p /desktop-icons/file-icons/show-removable -n -t bool -s false
# 3. Vypnutí obrázkové tapety a nastavení čistého neutrálního pozadí
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVirtual1/workspace0/image-style -n -t int -s 0 2>/dev/null || true
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/workspace0/image-style -n -t int -s 0 2>/dev/null || true
# 4. Vyčištění logů a vypnutí systému před exportem
pkill -f "server.jl"
rm -f ~/server.log
sudo poweroff
Po vypnutí virtuálního stroje odeberte v jeho nastavení ve VirtualBoxu síťový adaptér (Nastavení → Síť → odškrtnout Povolit síťový adaptér) a stroj vyexportujte přes Soubor → Exportovat appliance... (formát OVF 1.0 s generováním nových MAC adres).
Licence a právní ujednání
1. Výuková aplikace Optimization Visualizer: Projekt vznikl jako školní dílo ve smyslu § 60 zákona č. 121/2000 Sb. (autorský zákon) na Přírodovědecké fakultě Masarykovy univerzity. Autor poskytuje Masarykově univerzitě i veřejnosti právo na užití a šíření softwaru pod svobodnou licencí MIT License.
Autor aplikace: Mgr. Tomáš Halmazňa (Ústav matematiky a statistiky PřF MU)
Vedoucí diplomové práce: doc. Mgr. Petr Zemánek, Ph.D.
2. Výpočetní jazyk Julia: Jazyk a standardní knihovny jsou šířeny pod otevřenou licencí Julia MIT License (Copyright © 2009–2026 Julia contributors).
3. Operační systém Debian GNU/Linux: Základní operační systém a systémové komponenty jsou distribuovány v souladu s pravidly Debian Free Software Guidelines (DFSG).
4. Záruka a podpora: Software je poskytován „tak, jak je“ (AS IS), bez jakékoli výslovné nebo předpokládané záruky. Uživatelská podpora je zajišťována v rámci výuky příslušných optimalizačních předmětů na ÚMS PřF MU.
Projekt vznikl za finanční podpory v rámci projektu Specifického výzkumu v odborné, aplikované a učitelské matematice 2026 (SV matematika 2026), číslo projektu MUNI/A/1648/2025.