Programátorský kútik: prejavte sa!
-
Mek
Addict
- Príspevky: 4661
- Registrovaný: 23 mar 2005, 23:00
- Bydlisko: ZA <-> TN
- Kontaktovať používateľa:
Re: Programátorský kútik: prejavte sa!
Vdaka. Menit pismenka je mozne stlacenim Hotovo bez vylozenia pismenok, rovnako sa da iba vzdat tahu.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Programátorský kútik: prejavte sa!
ale ten dizajn... takto vyzerali prvé weby čo si pamätám, keď sme po škole ostali v počítačovej učebni na internet lebo ho ešte nikto nemal doma.
Re: Programátorský kútik: prejavte sa!
Nazdar, vytvoril som appku kde si najdete oblubenych youtuberov/channel-y, ulozite si ich do zaloziek a mozte sledovat ich twitter ucet aj youtube bez preklikavania sa medzi applikaciami a vyhladavania. Co poviete?
https://play.google.com/store/apps/deta ... e.igor.app
https://play.google.com/store/apps/deta ... e.igor.app
Re: Programátorský kútik: prejavte sa!
som v ČeskuJe nám ľúto, ale tento obsah zatiaľ nie je vo vašej krajine dostupný.
Pracujeme na tom, aby bol tento obsah v čo najkratšom čase dostupný aj v ďalších krajinách.
Skúste sa sem vrátiť neskôr.
-
scriptType
Medium Expert
- Príspevky: 110
- Registrovaný: 22 feb 2011, 19:34
Re: Programátorský kútik: prejavte sa!
Ahojte,
kolega našiel super vec na hranie sa s vlastnou logikou, vylepšovaním a uvážením. Pozrite na - https://play.elevatorsaga.com/
Je tam full API v JavaScripte na všetky príkazy pre riadenie výťahu. Ide o to, najlepšie optimalizovať svoj program výťahovej logiky pre čo najefektívnejšie prepravenie čo najviac ľudí s výťahmi v jednotlivých leveloch. Potrebujete rozhodnúť kedy má kam ísť, na aký event reagovať a pod. Super hra na cibrenie si svojej logiky v kóde. Bavte sa
Nieje to môj program, ale myslím že sa na tom zabavíte.
kolega našiel super vec na hranie sa s vlastnou logikou, vylepšovaním a uvážením. Pozrite na - https://play.elevatorsaga.com/
Je tam full API v JavaScripte na všetky príkazy pre riadenie výťahu. Ide o to, najlepšie optimalizovať svoj program výťahovej logiky pre čo najefektívnejšie prepravenie čo najviac ľudí s výťahmi v jednotlivých leveloch. Potrebujete rozhodnúť kedy má kam ísť, na aký event reagovať a pod. Super hra na cibrenie si svojej logiky v kóde. Bavte sa
Nieje to môj program, ale myslím že sa na tom zabavíte.
Re: Programátorský kútik: prejavte sa!
Minulý týždeň sa nám podarilo vydať našu prvú hru na Android,
ešte sme si vedomí nejakých nedostatkov a určite bude update, ale budem rád ak si zahráte a dáte feedback,
čo sa vám páči na hre a čo by ste zmenili, popr. čo by ste v hre privítali.
Ďakujem
https://play.google.com/store/apps/deta ... zigzagduck
ešte sme si vedomí nejakých nedostatkov a určite bude update, ale budem rád ak si zahráte a dáte feedback,
čo sa vám páči na hre a čo by ste zmenili, popr. čo by ste v hre privítali.
Ďakujem
https://play.google.com/store/apps/deta ... zigzagduck
-
Arkaz
Addict
- Príspevky: 4067
- Registrovaný: 09 nov 2008, 14:08
- Bydlisko: BA,Okolie
- Kontaktovať používateľa:
Re: Programátorský kútik: prejavte sa!
Aj by som si zahral ale ani mi ju nespusti padne hned po starte.
Huawei p20 pro android 9.
Re: Programátorský kútik: prejavte sa!
Díky, už by to malo ísť po Update, ale je možné, že sa ti budú niektoré veci zle vykreslovať (zrejme to je konkrétnou architektúrou) ešte to nemáme úplne fixnuté, ale už je to minimálne spustiteľné na všetkých telefónoch ...spravili sme chybu, že sme to netestovali na dostatočnom počte rôznorodých zariadení, teraz budeme musieť stráviť nejaký čas a hľadaním spätne, kedy sa zaniesla do hry chybaArkaz napísal:Aj by som si zahral ale ani mi ju nespusti padne hned po starte.Huawei p20 pro android 9.
Re: Programátorský kútik: prejavte sa!
mysql backuper
Hladal som program, ktory by viac databaz zalohoval na jeden klik. Kedze mam viac stranok, tak potrebujem na jeden klik vsetko naraz stiahnut na pocitac.
Nepodarilo sa mi najst nic vyhovujuce, tak som si vytvoril vlastny program. Nadefinuju sa tam databazy a kazdy den si urobim klikom zalohy.
Robi sa vzdy checksum tabuliek, teda ak sa zisti, ze vcera sa tabulka vobec nezmenila, tak dana tabulka sa nezalohuje, ale len sa skopiruje stara zaloha danej tabulky do novej.
Ak chcete aj vy tento program, mozete si ho stiahnut tu: https://www.kasman.sk/kom/trapsql.zip
Zaroven som tu aj urobil automaticke prepojenie cudzich klucov na tabulky. To znamena, ze ked otvorite tabulku, ktora je cez FK kluc pripojena na druhu, tak si ju mozete zobrazit ako master/detail a po prejdeni na riadok v masteri sa automaticky zobrazia zaznamy z detail tabulky.
Hladal som program, ktory by viac databaz zalohoval na jeden klik. Kedze mam viac stranok, tak potrebujem na jeden klik vsetko naraz stiahnut na pocitac.
Nepodarilo sa mi najst nic vyhovujuce, tak som si vytvoril vlastny program. Nadefinuju sa tam databazy a kazdy den si urobim klikom zalohy.
Robi sa vzdy checksum tabuliek, teda ak sa zisti, ze vcera sa tabulka vobec nezmenila, tak dana tabulka sa nezalohuje, ale len sa skopiruje stara zaloha danej tabulky do novej.
Ak chcete aj vy tento program, mozete si ho stiahnut tu: https://www.kasman.sk/kom/trapsql.zip
Zaroven som tu aj urobil automaticke prepojenie cudzich klucov na tabulky. To znamena, ze ked otvorite tabulku, ktora je cez FK kluc pripojena na druhu, tak si ju mozete zobrazit ako master/detail a po prejdeni na riadok v masteri sa automaticky zobrazia zaznamy z detail tabulky.
Re: Programátorský kútik: prejavte sa!
pre tych dvoch ludi na svete, ktorym vadi, ze na absynt.sk maju pokazeny sorting knih podla ceny.
Skript nacita nazvy a ceny knih v zozname a nasledne ich zoradi podla najlacnejsich ebook verzii.
Modifikacia zoznamu knih a sorting podla ceny papierovej verzie is trivial and left as an exercise to the reader.
Skript nacita nazvy a ceny knih v zozname a nasledne ich zoradi podla najlacnejsich ebook verzii.
Modifikacia zoznamu knih a sorting podla ceny papierovej verzie is trivial and left as an exercise to the reader.
- Prílohy
-
- absynt-ebook-prices.zip
- (1.58 KiB) 77 stiahnutí
-
harrison314
Hardcore addict
- Príspevky: 8215
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Programátorský kútik: prejavte sa!
Spravil som male technologicke demo pre pouzitie Slovenskeho obcianskeho preukazu na desifrovanie suborov (zasifrovanie sa robi pomocou exportovaneho certifikatu).
Program vie:
- exportovat sifrovaci certifikat z obcianskeho (je treba zadat BOK)
- sifrovacim certifikatom zasifrovat subor do kontajneru
- rozsifrovat kontajner pomocou obcianskeho preukazu (je treba zadat BOK)
Krtaky popis a priklad pouzitia najdete tu:
https://github.com/harrison314/SlovakEidDecryptionTool
Program je mozne stiahnut z https://github.com/harrison314/SlovakEi ... l/releases.
Na zasifrovanie suboru sa pouziva AES-256 CBC s PKCS7 pdingom, samotny AES kluc je sifrovany RSA RKCS1.
//autoeditácia príspevku (02 Máj 2019, 18:22)
Este pridam znazornenie pouzitia:
Program vie:
- exportovat sifrovaci certifikat z obcianskeho (je treba zadat BOK)
- sifrovacim certifikatom zasifrovat subor do kontajneru
- rozsifrovat kontajner pomocou obcianskeho preukazu (je treba zadat BOK)
Krtaky popis a priklad pouzitia najdete tu:
https://github.com/harrison314/SlovakEidDecryptionTool
Program je mozne stiahnut z https://github.com/harrison314/SlovakEi ... l/releases.
Na zasifrovanie suboru sa pouziva AES-256 CBC s PKCS7 pdingom, samotny AES kluc je sifrovany RSA RKCS1.
//autoeditácia príspevku (02 Máj 2019, 18:22)
Este pridam znazornenie pouzitia:
-
martinius96
Novice
- Príspevky: 4
- Registrovaný: 03 sep 2017, 12:27
Re: Programátorský kútik: prejavte sa!
Ahoj, rád by som dnes predstavil svoju implementáciu pre hru Mastermind, ktorá je aj známa ako Logik. V tejto implementácii hráč neháda farby a ich poradie ako je to v originálnej - stolnej verzii, ktorú hrajú dvaja hráči, ale háda čísla a ich poradie. Je nutné zdôrazniť, že čísla sa nemôžu opakovať. V úlohe určenia čísel a ich poradia je Arduino, ktoré ich vygeneruje.
Arduino slúži ďalej ako počítadlo pokusov a prijíma logické vstupy prostredníctvom 5 tlačidiel, ktoré sa spínajú proti zemi (INPUT_PULLUP). Tlačidlami sa zadáva používateľský vstup v podobe čísel na pozície. Posledným tlačidlom sa vstup potvrdí a odošle do Arduina. Na LCD displeji je okrem aktuálneho používateľského vstupu aj vyobrazenie výsledku.
Ak používateľ neuhádne číslo a ani pozíciu, na displeji sa na príslušnej pozícii zobrazí -, ak uhádne číslo s pozíciou, zobrazí sa =, ak uhádne číslo, ale nie pozíciu, zobrazí sa C. Pre vývojárske účely je možné použiť DEBUG makro, ktoré je nutné odkomentovať. V princípe len zobrazí na displej hľadané číslo, ak chce vývojár odtestovať funkčnosť jednotlivých prvkov a overiť, či hra skončí po prekročení pokusov, alebo uhádnutí hľadaného čísla.
Hra je limitovaná na 10 pokusov hráča. V prípade prekročenia počtu pokusov sa hra ukončí s hláškou o prehre hráča. V prípade, že hráč uhádne cieľové číslo, hra sa končí s výpisom hlášky o výhre hráča. Hra nie je časovo obmedzená. Pri hre sa odporúča využiť aj ceruzku a papier na písanie si vstupov, čo môže viesť k štatistickej výhode pri hľadaní cieľového čísla.
Som otvorený aj konštruktívnej kritike, najmä od "hackera" Dr. House-a.
Knižnica pre LCD displej: https://github.com/fdebrabander/Arduino ... 2C-library
Program pre Mastermind:
Arduino slúži ďalej ako počítadlo pokusov a prijíma logické vstupy prostredníctvom 5 tlačidiel, ktoré sa spínajú proti zemi (INPUT_PULLUP). Tlačidlami sa zadáva používateľský vstup v podobe čísel na pozície. Posledným tlačidlom sa vstup potvrdí a odošle do Arduina. Na LCD displeji je okrem aktuálneho používateľského vstupu aj vyobrazenie výsledku.
Ak používateľ neuhádne číslo a ani pozíciu, na displeji sa na príslušnej pozícii zobrazí -, ak uhádne číslo s pozíciou, zobrazí sa =, ak uhádne číslo, ale nie pozíciu, zobrazí sa C. Pre vývojárske účely je možné použiť DEBUG makro, ktoré je nutné odkomentovať. V princípe len zobrazí na displej hľadané číslo, ak chce vývojár odtestovať funkčnosť jednotlivých prvkov a overiť, či hra skončí po prekročení pokusov, alebo uhádnutí hľadaného čísla.
Hra je limitovaná na 10 pokusov hráča. V prípade prekročenia počtu pokusov sa hra ukončí s hláškou o prehre hráča. V prípade, že hráč uhádne cieľové číslo, hra sa končí s výpisom hlášky o výhre hráča. Hra nie je časovo obmedzená. Pri hre sa odporúča využiť aj ceruzku a papier na písanie si vstupov, čo môže viesť k štatistickej výhode pri hľadaní cieľového čísla.
Som otvorený aj konštruktívnej kritike, najmä od "hackera" Dr. House-a.
Knižnica pre LCD displej: https://github.com/fdebrabander/Arduino ... 2C-library
Program pre Mastermind:
Kód: Vybrať všetko
/*|----------------------------------------------------------------------------|*/
/*|SKETCH PRE MASTERMIND IMPLEMENTACIU |*/
/*|VYHOTOVIL: MARTIN CHLEBOVEC |*/
/*|PODPOR PROJEKT PRE VIAC VARIANT, SUPPORT: https://paypal.me/chlebovec |*/
/*|Doska: Arduino Uno / AtMega328P |*/
/*|MAXIMALNY POCET POKUSOV: 10 |*/
/*|POCET VSTUPOV: 5X PUSHBUTTON - SPINACIE TLACIDLA |*/
/*|VYGENEROVANE 4-CISLIE: KAZDE CISLO JE ROZNE V ROZSAHU 0-9 BEZ OPAKOVANIA! |*/
/*|PRE ZOBRAZENIE VYGENEROVANEHO CISLA POUZITE DEBUG (ODKOMENTOVAT) |*/
/*|----------------------------------------------------------------------------|*/
/*|VYSVETLIVKY PRE ZNAČKY NA DISPLEJI: |*/
/*| C --> uhadnute cislo na inej pozicii |*/
/*| = --> uhadnute cislo aj s poziciou (SPRAVNE CISLO!) |*/
/*| - --> neuhadnute cislo, ani pozicia |*/
/*|----------------------------------------------------------------------------|*/
#define DEBUG //odkomentuj pre DEBUG INFO (ZOBRAZENIE HLADANEHO CISLA)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
const int buttonPin1 = 6;
const int buttonPin2 = 5;
const int buttonPin3 = 4;
const int buttonPin4 = 3;
const int buttonPin5 = 2;
int cislo1 = 0;
int cislo2 = 0;
int cislo3 = 0;
int cislo4 = 0;
int cielovecislo1 = 0;
int cielovecislo2 = 0;
int cielovecislo3 = 0;
int cielovecislo4 = 0;
int buttonState1 = HIGH;
int buttonState2 = HIGH;
int buttonState3 = HIGH;
int buttonState4 = HIGH;
int buttonState5 = HIGH;
int lastButtonState1 = HIGH;
int lastButtonState2 = HIGH;
int lastButtonState3 = HIGH;
int lastButtonState4 = HIGH;
int lastButtonState5 = HIGH;
unsigned long lastDebounceTime1 = 0;
unsigned long lastDebounceTime2 = 0;
unsigned long lastDebounceTime3 = 0;
unsigned long lastDebounceTime4 = 0;
unsigned long lastDebounceTime5 = 0;
unsigned long debounceInterval = 50;
int pokus = 0;
void setup() {
lcd.begin(); //incializacia displeja na I2C zbernici
lcd.backlight(); //zapnutie podsvietenia
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
pinMode(buttonPin4, INPUT_PULLUP);
pinMode(buttonPin5, INPUT_PULLUP);
randomSeed(analogRead(0));
lcd.setCursor(0, 0); //nastav kurzor pre zapis na 1. riadok, 1. stlpec
lcd.print("ZADANE CISLO: 0000");
generuj_cisla();
#ifdef DEBUG
lcd.setCursor(0, 2);
lcd.print("DEBUG ON:");
lcd.setCursor(0, 3);
lcd.print("HLADANE CISLO: ");
lcd.print(cielovecislo1);
lcd.print(cielovecislo2);
lcd.print(cielovecislo3);
lcd.print(cielovecislo4);
#endif
}
void loop() {
if (pokus >= 10) {
lcd.setCursor(0, 2);
lcd.print("PREHRALI STE!");
lcd.setCursor(0, 3);
lcd.print("KONIEC HRY ");
while (1);
} else {
int reading1 = digitalRead(buttonPin1);
int reading2 = digitalRead(buttonPin2);
int reading3 = digitalRead(buttonPin3);
int reading4 = digitalRead(buttonPin4);
int reading5 = digitalRead(buttonPin5);
if (reading1 != lastButtonState1) {
lastDebounceTime1 = millis();
}
if (reading2 != lastButtonState2) {
lastDebounceTime2 = millis();
}
if (reading3 != lastButtonState3) {
lastDebounceTime3 = millis();
}
if (reading4 != lastButtonState4) {
lastDebounceTime4 = millis();
}
if (reading5 != lastButtonState5) {
lastDebounceTime5 = millis();
}
if ((millis() - lastDebounceTime1) > debounceInterval) {
if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
cislo1++;
if (cislo1 > 9) {
cislo1 = 0;
}
}
}
updateLCD();
}
if ((millis() - lastDebounceTime2) > debounceInterval) {
if (reading2 != buttonState2) {
buttonState2 = reading2;
if (buttonState2 == HIGH) {
cislo2++;
if (cislo2 > 9) {
cislo2 = 0;
}
}
}
updateLCD();
}
if ((millis() - lastDebounceTime3) > debounceInterval) {
if (reading3 != buttonState3) {
buttonState3 = reading3;
if (buttonState3 == HIGH) {
cislo3++;
if (cislo3 > 9) {
cislo3 = 0;
}
}
}
updateLCD();
}
if ((millis() - lastDebounceTime4) > debounceInterval) {
if (reading4 != buttonState4) {
buttonState4 = reading4;
if (buttonState4 == HIGH) {
cislo4++;
if (cislo4 > 9) {
cislo4 = 0;
}
}
}
updateLCD();
}
if ((millis() - lastDebounceTime5) > debounceInterval) {
if (reading5 != buttonState5) {
lcd.setCursor(16, 1);
lcd.print(cislo1);
lcd.print(cislo2);
lcd.print(cislo3);
lcd.print(cislo4);
buttonState5 = reading5;
if (buttonState5 == HIGH) {
pokus++;
updateLCD();
over_cisla();
cislo1 = 0;
cislo2 = 0;
cislo3 = 0;
cislo4 = 0;
}
}
}
lastButtonState1 = reading1;
lastButtonState2 = reading2;
lastButtonState3 = reading3;
lastButtonState4 = reading4;
lastButtonState5 = reading5;
}
}
void updateLCD() {
lcd.setCursor(16, 0);
lcd.print(cislo1);
lcd.print(cislo2);
lcd.print(cislo3);
lcd.print(cislo4);
lcd.setCursor(0, 1);
lcd.print("POKUS: ");
lcd.print(pokus);
}
void generuj_cisla() {
cielovecislo1 = random(0, 9);
cielovecislo2 = random(0, 9);
while (cielovecislo2 == cielovecislo1) {
cielovecislo2 = random(0, 9);
}
cielovecislo3 = random(0, 9);
while ((cielovecislo3 == cielovecislo1) || (cielovecislo3 == cielovecislo2)) {
cielovecislo3 = random(0, 9);
}
cielovecislo4 = random(0, 9);
while ((cielovecislo4 == cielovecislo1) || (cielovecislo4 == cielovecislo2) || (cielovecislo4 == cielovecislo3)) {
cielovecislo4 = random(0, 9);
}
}
void over_cisla() {
if (cislo1 == cielovecislo1) {
lcd.setCursor(10, 1);
lcd.print("="); //UHADNUTE CISLO VRATANE POZICIE
} else if ((cislo1 == cielovecislo2) || (cislo1 == cielovecislo3) || (cislo1 == cielovecislo4)) {
lcd.setCursor(10, 1);
lcd.print("C"); //UHADNUTE CISLO BEZ POZICIE
} else {
lcd.setCursor(10, 1);
lcd.print("-"); //NEUHADNUTE CISLO, ANI POZICIA
}
if (cislo2 == cielovecislo2) {
lcd.setCursor(11, 1);
lcd.print("="); //UHADNUTE CISLO VRATANE POZICIE
} else if ((cislo2 == cielovecislo1) || (cislo2 == cielovecislo3) || (cislo2 == cielovecislo4)) {
lcd.setCursor(11, 1);
lcd.print("C"); //UHADNUTE CISLO BEZ POZICIE
} else {
lcd.setCursor(11, 1);
lcd.print("-"); //NEUHADNUTE CISLO, ANI POZICIA
}
if (cislo3 == cielovecislo3) {
lcd.setCursor(12, 1);
lcd.print("="); //UHADNUTE CISLO VRATANE POZICIE
} else if ((cislo3 == cielovecislo1) || (cislo3 == cielovecislo2) || (cislo3 == cielovecislo4)) {
lcd.setCursor(12, 1);
lcd.print("C"); //UHADNUTE CISLO BEZ POZICIE
} else {
lcd.setCursor(12, 1);
lcd.print("-"); //NEUHADNUTE CISLO, ANI POZICIA
}
if (cislo4 == cielovecislo4) {
lcd.setCursor(13, 1);
lcd.print("="); //UHADNUTE CISLO VRATANE POZICIE
} else if ((cislo4 == cielovecislo1) || (cislo4 == cielovecislo2) || (cislo4 == cielovecislo3)) {
lcd.setCursor(13, 1);
lcd.print("C"); //UHADNUTE CISLO BEZ POZICIE
} else {
lcd.setCursor(13, 1);
lcd.print("-"); //NEUHADNUTE CISLO, ANI POZICIA
}
if ((cislo1 == cielovecislo1) && (cislo2 == cielovecislo2) && (cislo3 == cielovecislo3) && (cislo4 == cielovecislo4)) {
lcd.setCursor(0, 2);
lcd.print("VYHRALI STE!");
lcd.setCursor(0, 3);
lcd.print("KONIEC HRY ");
while (1);
}
}-
martinius96
Novice
- Príspevky: 4
- Registrovaný: 03 sep 2017, 12:27
Re: Programátorský kútik: prejavte sa!
Čo zas skáčeš?
-
harrison314
Hardcore addict
- Príspevky: 8215
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Programátorský kútik: prejavte sa!
accid tym chcel asi naznacit to, ze v kode pouzivas vela premennych s cislenymi indexami na konci,martinius96 napísal:Čo zas skáčeš?
tie ktore spolu suvisia (buttonPin, cislo, cielovecislo, buttonState,...) by si mal dat do struktury a nameisto cislnych indexov nakonci pouzit pole tejtro struktury a tam, kde treba bude for-cyklus,
potom bude tvoj kod vyrazne prehladnejsi a bude ho 3-krat menej.
-
martinius96
Novice
- Príspevky: 4
- Registrovaný: 03 sep 2017, 12:27
Re: Programátorský kútik: prejavte sa!
Aha, už chápem.
Budem sa snažiť do budúcna zlepšiť.
Budem sa snažiť do budúcna zlepšiť.
Re: Programátorský kútik: prejavte sa!
ozaj to neber v zlom, to neni vysmech ani urazanie, proste feedback urceny na to aby si sa zlepsil, na nic ine. je pravda ze som to nenapisal tak podrobne ako harrison, ale dal som link kde by si si koniec koncov precital to iste. nedaj sa, programator sa uci cely zivot.
Re: Programátorský kútik: prejavte sa!
čau čau čau 
cez sviatky som sa kus nudil, tak som sa pobavil v android studiu:
https://play.google.com/store/apps/deta ... recin.laco
P.S. môj prvý pokus úplne, viem, že niečo podobné už je, ale tak alternatíva bez reklám

cez sviatky som sa kus nudil, tak som sa pobavil v android studiu:
https://play.google.com/store/apps/deta ... recin.laco
P.S. môj prvý pokus úplne, viem, že niečo podobné už je, ale tak alternatíva bez reklám