Cerveno-cierne stromy: ako pridavat nove vrcholy do stromu

Perfektny navod (s obrazkami :), ako vytvarat cerveno-cierne stromy (kedy sa meni cerveny vrchol na cierny, kedy sa rotuje, kedy sa len menia farby apod.) som nasiel na tejto stranke http://deiw.blog.matfyz.sk/p17411-cerveno-cierne-stromy. Cely postup som skontroloval, spolieham sa na program, ktory je sucastou diplomovky Andreja Gazdarica a Juraja Jevcaka spred niekolkych rokov. Program sa da stiahnut odtialto (priamy link na zipko). Btw, dokaze pracovat nie len s cerveno ciernymi stromami, ale aj napr. s AVL, B-stromami, presitymi…

Jednoducha webova galeria s nadychom efektnosti II.

Povodnu galeriu som prepojil s Picasou, takze nemiesto nahodne zafarbenych stvorcekov sa zobrazi zmysluplna galeria.

Odkaz na novu galeriu.

Zdrojaky.

Jednoducha webova galeria s nadychom efektnosti

Z dlhej chvile som napisal jednoduchu webovu galeriu. Vyuziva rozne css3 ficury a ajax. Vlastne cele rozhranie je napisane v javascripte (kniznica JQuery).  Je to alpha verzia, lebo dokaze zatial len zobrazit farebne stvorce (nahodnej farby). O nieco neskor, ked sa mi bude chciet, tak spojim tuto galeriu s Flickrom alebo nejakym inym uloziskom fotiek.

IE verzie mensie nez 10 si nerozumeju s css gradientmi. V ostatnych prehliadacoch by gradient nemal robit problem (vid http://caniuse.com/#search=gradient).

Odkaz na galeriu

Zdrojaky.

Specifikacia k rocnikovemu projektu

Zverejnil som specifikaciu k svojmu rocnikovemu projektu. Projekt sa vola CinanCMS (rekurzivne akronymy rulez: Cinan Is Not ANomalous CMS) a je to blogovaci system. Prvym vzorom pri vymyslani temy bol WordPress, druhym vzorom bola Miranda a tretim vzorom bola OperaMail (vlastne aj GMail).

HTML (pokusim sa vytazit co to aj z verzie 5 s ohladom na “obrovsku” podporu IE), CSS (vyuzijem aj CSS3), JS, MySQL. CodeIgniter framework. MVC architektura.

Zdrojove kody aj s dokumentaciou budu uverejnene, ked projekt v letnom semestri odovzdam. Vysledna aplikacia sa bude dat vyskusat po zverejneni zdrojakov. Dokonca aj uzivatelsku prirucku napisem :)

Specifikacia vo formate PDF.

Riesenie parovania beziacich okien aplikacii s ich spustacmi v paneli

Panely ako docky alebo bocny panel v gnome-shell (tiez aj hlavny panel vo Windows 7) sa spravaju ako spustace aplikacii a zaroven ako taskbar. Problem je, ze niektore aplikacie (najcastejsie java aplikacie) po spusteni vytvoria novu ikonku na paneli – vysledkom su dve rovnake ikony na paneli – jedna sa sprava ako spustac a druha ako beziaca aplikacia. Riesenie spociva v pouziti javaagenta (pre java aplikacie) alebo uprave .desktop suboru.

javaagent

javaagent sa da stiahnut na githube(aj ako binarka). Ak napriklad spustim jdownloader, WM_CLASS property hlavneho okna je podla vypisu programu `xprop’ takato:  WM_CLASS(STRING) = “sun-awt-X11-XFramePeer”, “jd-Main”. Avsak, ked spustim jdownloader spolu s javaagentom, WM_CLASS sa zmeni na toto:  WM_CLASS(STRING) = “sun-awt-X11-XFramePeer”, “JDownloader”. Teraz uz panel nevytvori novu ikonku programu, ale spravne sparuje okno aplikacie so spustacom. Jdownloader staci spustit takto:

java -javaagent:<path_to_agent.jar>/agent.jar=JDownloader -jar /home/<user>/.jd/JDownloader.jar

Takto teda vyzera upraveny .desktop subor v ~/.local/share/applications/:

[Desktop Entry]
Name=JDownloader
GenericName=Download Manager
Comment=Java based download manager, that also handles one-click-hosters
Exec=java -javaagent:/home/cinan/system/misc/agent.jar=JDownloader -jar /home/cinan/.jd/JDownloader.jar
StartupNotify=true
Icon=jdownloader
Type=Application
Categories=Network;
Podobne som vyriesil aj problem s netbeans, aj ked riesenie je ovela menej elegantne. Spustil som netbeans z terminalu, vo vypise `ps aux’ som nasiel kompletny prikaz, ktorym sa spustil netbeans, skopiroval ho, upravil (vlozil donho javaagent prepinac) a ulozil ako novy .desktop subor. Takto to vyzera:
[Desktop Entry]
Name=NetBeans PHP IDE
Comment=A powerful PHP development environment
Icon=/home/cinan/system/icon/netbeans.png
Exec=/home/cinan/system/bin/netbeans
Type=Application
Terminal=false
StartupNotify=true
Categories=Development;

Subor /home/cinan/system/bin/netbeans obsahuje toto:

java -javaagent:/home/cinan/system/misc/agent.jar=netbeans -Djdk.home=/usr/lib/jvm/java-6-openjdk -classpath /home/cinan/.netbeans/7.0/lib/boot.jar:/home/cinan/.netbeans/7.0/lib/org-openide-modules.jar:/home/cinan/.netbeans/7.0/lib/org-openide-util.jar:/home/cinan/.netbeans/7.0/lib/org-openide-util-lookup.jar:/home/cinan/.netbeans/7.0/lib/locale/boot_ja.jar:/home/cinan/.netbeans/7.0/lib/locale/boot_pt_BR.jar:/home/cinan/.netbeans/7.0/lib/locale/boot_ru.jar:/home/cinan/.netbeans/7.0/lib/locale/boot_zh_CN.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-modules_ja.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-modules_pt_BR.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-modules_ru.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-modules_zh_CN.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util_ja.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util-lookup_ja.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util-lookup_pt_BR.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util-lookup_ru.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util-lookup_zh_CN.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util_pt_BR.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util_ru.jar:/home/cinan/.netbeans/7.0/lib/locale/org-openide-util_zh_CN.jar:/usr/lib/jvm/java-6-openjdk/lib/dt.jar:/usr/lib/jvm/java-6-openjdk/lib/tools.jar -Dnetbeans.dirs=/usr/share/netbeans/nb:/usr/share/netbeans/bin/../ergonomics:/usr/share/netbeans/ide:/usr/share/netbeans/bin/../java:/usr/share/netbeans/bin/../xml:/usr/share/netbeans/bin/../apisupport:/usr/share/netbeans/bin/../webcommon:/usr/share/netbeans/websvccommon:/usr/share/netbeans/bin/../enterprise:/usr/share/netbeans/bin/../mobility:/usr/share/netbeans/bin/../profiler:/usr/share/netbeans/bin/../ruby:/usr/share/netbeans/bin/../python:/usr/share/netbeans/php:/usr/share/netbeans/bin/../visualweb:/usr/share/netbeans/bin/../soa:/usr/share/netbeans/bin/../identity:/usr/share/netbeans/bin/../uml:/usr/share/netbeans/harness:/usr/share/netbeans/bin/../cnd:/usr/share/netbeans/bin/../dlight:/usr/share/netbeans/bin/../groovy:/usr/share/netbeans/bin/../extra:/usr/share/netbeans/bin/../javafx:/usr/share/netbeans/bin/../javacard: -Dnetbeans.home=/usr/share/netbeans/platform -Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade -Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense -XX:MaxPermSize=384m -Xmx727m -client -Xss2m -Xms32m -XX:PermSize=32m -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.java2d.noddraw=true -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/cinan/.netbeans/7.0/var/log/heapdump.hprof org.netbeans.Main –userdir /home/cinan/.netbeans/7.0 –branding nb –laf javax.swing.plaf.metal.MetalLookAndFeel

Tento spustac ignoruje nastavenia v /usr/share/netbeans/etc/netbeans.conf.

Uprava .desktop suboru

Panel Docky som musel naucit, ze spustac prehliadaca chromium a jeho otvorene okno je ten isty program, a teda aby nevytvaral novu ikonu beziaceho okna. Povodne bola WM_CLASS property takato: WM_CLASS(STRING) = “chrome”, “chromium-browser”. Upravil som teda .desktop subor, presnejsie som pridal zvyrazneny riadok:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Comment=Browse the World Wide Web with Chromium
Name=Chromium
Categories=Application;Network;
Exec=chromium-browser %U
Icon=product_logo_48.png
StartupNotification=false
StartupWMClass=Chrome
Terminal=false
TryExec=chromium-browser
Type=Application
X-MultipleArgs=false

Teraz je po spusteni WM_CLASS nasledovna: WM_CLASS(STRING) = “chrome”, “Chrome”, a panel sa sprava tak, ako sa od neho ocakava.

Dost podstatne je aj to, aby panel vedel, ze ma pouzivat ten spravny .desktop subor. Ak sa ulozi do adresara ~/.local/share/applications/, tak gnome-shell v zozname aplikacii uprednostni prave subory ulozene v tom adresari. Spustace v Docky som rucne upravoval cez gconf-editor v /apps/docky-2/Docky/Interface/DockPreferences/Dock1.

Rozposielam pozvanky do google+

Ktokolvek, kto sa chce dostat do socialnej siete google+, mi moze napisat email (moja adresa je cinan6 –zavinac– gmail –bodka– com) a ja mu co najskor pozvanku poslem. Alebo skuste tento link: https://plus.google.com/_/notifications/ngemlink?path=%2F%3Fgpinv%3DJOqkJckflc4%3AurzEW6f0GXw

Chromium – 3. cast – vlastna Start Page

Rozhodol som sa vytvorit novu startovaciu stranku (inymi slovami stranku s odkazmi na casto navstevovane stranky) s vyuzitim moderneho css3 – konkretne som pouzil transform, transition a @font-face. Stranka by sa mala spravne zobrazit v prehliadacoch s jadrom Webkit, Gecko a Presto (testoval som v: Chromium 12, Firefox 5, Opera 11.50). Podporu spominanych properties je mozne si skontrolovat napriklad na wikipedii.

Navod, ako v novom tabe v Chromiu otvorit nasu vlastnu stranku, je popisany v [1]. Vysledna stranka vyzera takto:

Naviac, pridal som skryte odkazy, ktore sa zobrazia, len ked na nich ukazuje kurzor (lavy dolny roh, nie je vidiet na screenshote). (viac…)

Ovladanie linuxoveho desktopu gamepadom

Utilita qjoypad umoznuje priradit vsetkym tlacidlam a osiam na gamepade urcitu udalost – kliknutie lavym/pravy/inym tlacidlom mysi, pohyb mysou, stlacenie nejakej klavesy atd. Aby system rozpoznal gamepad (v mojom pripade gamepad ku xbox 360), je potrebne mat nacitany xpad kernel modul. Taktiez som musel odinstalovat balik xf86-input-joystick (X.Org Joystick input driver), lebo inak sa gamepad spraval zvlastne pri pokuse pohybovat kurzorom pomocou analogovych tlacidiel.

Moja konfiguracia ~/.qjoypad3/my.lyt:

# QJoyPad 4.1 Layout File

Joystick 1 {
        Axis 1: gradient, maxSpeed 10, mouse+h
        Axis 2: gradient, maxSpeed 10, mouse+v
        Axis 4: gradient, +key 0, -key 111
        Axis 5: gradient, +key 116, -key 111
        Button 1: mouse 1
        Button 3: mouse 3
        Button 11: mouse 2
}

Administracia leteniek – projekt v Lazaruse

Projekt LetiAdmin je naprogramovany v Lazaruse (verzia 0.9.30). Bol otestovany na Windowse (7) a GNU/Linuxe.

Prostredie aplikacie

Po otvoreni aplikacie uzivatel si moze vybrat, ci chce otvorit naposledy otvorene databazy, alebo chce vytvorit nove databazy, alebo chce otvorit databazy z konkretnych suborov.

Po vybere databaz sa zobrazi tabulka s udajmi o objednanej letenke. Na boku okna je na vyber viacero moznosti:

Pridanie letiska – vlozi sa nazov letiska a relativna vzdialenost. Relativna vzdialenost sluzi na vypocet ceny. Napriklad Tokio by mohlo mat vzdialenost 0.1, Dubaj 1, Bratislava 3, Pariz 5, Los Angeles 15.

Pridanie letenky – vlozia sa informacie o letenke a tiez sa nastavi pasazier. Bud sa vytvori novy pasazier, alebo sa vyberie skor vytvoreny.

Upravit letenku – podobne ako v ‘Pridanie letenky’, udaje sa prepisu.

Upravit letisko – zmenit pomenovanie letiska a relativnu vzdialenost.

Upravit cestujucich – sluzi na zmenu informacii o cestujucom.

Filter, vyhladavanie – zobrazia len tie polozky, ktore vyhovuju filtru alebo retazcu, ktory sa ma vyhladat.

Resetovat pohlad – zrusi filtre a vyhladavanie, zobrazi kompletnu tabulku.

Menu programu – umoznuje otvorit/ulozit databazy zo suborov, ukoncit aplikaciu a polozku O programe.

Ako to vyzera

Screenshot aplikacie

(viac…)

Rezervacia leteniek II, pokracovanie projektu

Prvy webovy projekt sa dockal vylepsenia. Popri XHTML+PHP je pouzita aj MySQL databaza. Funkcnost povodnej stranky/projektu sa viac menej nezmenila (zamerom projektu je aj nadalej nakup leteniek), ale pribudla moznost sa registrovat a ukladat letenky, administratorske ucty maju moznost upravovat letiska, akciove letenky a ine udaje. Vychodzie ucty na vyskusanie su taketo:

meno: “admin”, heslo: “admin” //administratorsky ucet

meno: “mravco”,heslo: “mravco” //bezny ucet

Stranka projektu: http://davinci.fmph.uniba.sk/~elias17/projekty/letenky2/

Zdrojove kody: http://davinci.fmph.uniba.sk/~elias17/projekty/letenky2/zdrojaky_public.zip

Follow

Get every new post delivered to your Inbox.