Anonymní profil Matrix17 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Matrix17 – Programujte.comAnonymní profil Matrix17 – Programujte.com

 

Příspěvky odeslané z IP adresy 195.113.207.–

Java › Hledám parťáka (Java vývojář…
24. 2. 2016   #208852

#1 Vlad
Docela dobrej nápad, to ukradnu.

CSS › Hover na jeden prvok- ovplyv…
9. 12. 2015   #207176

#2 majooo
Napadá mě řešení pomocí z-indexu, kdy mezi element s hoverem a ostatní vložíš div s nějakým pozadím a nastavením nulovým displayem, přičemž se tento div zobrazí když se na nějaký prvek najede.

MySQL › Alternativa GROUP_CONCAT
8. 12. 2015   #207136

#1 Row
Pokud používáš verzi 8.4 a vyšší, můžeš použít funkci array_agg.

SELECT
    sloupec1,
    array_agg(sloupec2),
    sloupec3
FROM
    tabulka
GROUP BY
    sloupec3;

Od verze 9.0 je další možností funkce string_agg, která ti dokonce dává možnost vložit znak, pomocí nichž budeš hodnoty rozdělovat...

string_agg(<název_sloupce>, <znak_pro_určení_hodnot>)

MySQL › SW - DB Analyst
2. 11. 2015   #206098

#4 Kit
Na brainstorming je papír nenahraditelnej, to jo. Navicat mi vyhovuje v tom, že kromě vizualizace databázového diagramu ti pak po uložení rovnou udělá i ty tabulky.

C / C++ › vypočet minima, maxima a str…
27. 10. 2015   #205925

#1 evam88
C++ řešení.

#include <vector>
#include <iostream>
#include <algorithm>

int main(int argc, char* argv[])
{
    std::vector<int> numbers;
    int number;
    int count = 0;
    int sum = 0;

    do {
        std::cout << "Insert a number: ";
        std::cin >> number;

        if (number == 0) {
            break;
        }

        numbers.push_back(number);
        sum += number;
        ++count;
    } while (true);

    if (count == 0) {
        std::cout << "The values could not be calculated. No input." << std::endl;
        return -1;
    }

    auto minMax = std::minmax_element(std::begin(numbers), std::end(numbers));

    std::cout << "Min: " << *minMax.first << std::endl;
    std::cout << "Max: " << *minMax.second << std::endl;
    std::cout << "Median: " << static_cast<double>(sum) / count << std::endl;
}
C / C++ › Úprava kódu
19. 5. 2015   #202232

#10 vesi
Pod čím kompiluješ? Ve VS2013 mi to s tímto zápisem C2664 vůbec nehází. (Oddělej referenci u funkce log se třemi parametry.)

#ifndef ABSTRACT_LOGGER_H
#define ABSTRACT_LOGGER_H

#include <string>

namespace Palo {
	namespace SpreadsheetFuncs {
		class AbstractLogger {
		public:
			enum Type {
				LOG_ERROR, LOG_WARNING, LOG_INFO
			};

			virtual void log(Type t, const std::string& msg) throw () = 0;
		};
	}
}
#endif

////////////////////////////////////

#ifndef XLL_CELL_LOGGER_H
#define XLL_CELL_LOGGER_H

#include <fstream>

//includuji to jinak, to si u sebe změň
#include "AbstractLogger.h"

namespace Palo {
	namespace XLL {
		class XLLCellLogger : public Palo::SpreadsheetFuncs::AbstractLogger {
		public:
			XLLCellLogger();
			~XLLCellLogger();

			static XLLCellLogger& getInstance() {
				static XLLCellLogger pl;
				return pl;
			}

			void log(Type t, std::string msg, bool force_logging) throw();
			virtual void log(Type t, const std::string& msg) throw() {
				log(t, msg, false);
			};

		private:
			std::ofstream m_log;
		};
	}
}
#endif

Nicméně to řve kvůli volání smazaného copy konstruktoru třídy std::ofstream (jak jsem již psal ve 2. příspěvku). Použij na logování něco jiného.

C / C++ › Úprava kódu
19. 5. 2015   #202224

#3 vesi
Jde o to, že když definuješ virtual / pure virtual metodu z rodiče, tak je třeba, aby ta tvá definice měla stejný přepis (stejnou deklaraci) jako funkce rodičovská.

Původní metoda používala předávání stringu hodnotou, a na to jsi měl tu svou funkci log, oni to změnili na předávání stringu pomocí konstantní reference a kvůli tomu musíš upravit tu svou funkci v XLLCellLogger, aby ten přepis souhlasil...

Takže prostě zkopíruješ deklaraci dané metody, kterou implementuješ. Zmeň si v té své třídě XLLCellLogger metodu na 

void log( Type t, std::string& msg ) throw()

To je jako když v C# děláš 

public override bool Equals(object o)

Ačkoliv toto většinou implementuješ pro konkrétní objekt a chceš proovnávat jen dva objekty stejného typu, tak musíš mít v deklaraci jako parametr object a ne třídu, pro niž danou metodu děláš, a přetypování object si udělat až uvnitř té funkce, protože rodičovská metoda Equals má v parametru právě ten object, a to musí souhlasit.

C / C++ › Qt - Visual Studio 2013
16. 4. 2015   #201461

#1 Kenvelo
Toto ti nepomohlo, Kenvelo? http://stackoverflow.com/questions/15826893/building-qt5-with-visual-studio-2012-visual-studio-2013-and-integrating-with

C / C++ › Výhody C oproti C++
13. 4. 2015   #201337

#17 PiranhaGreg
Připadá mi, že pochopit OOP až po přibližně 3 - 4 letech je dost dlouhá doba. Polymorfismus, dědičnost a tak mně začaly dávat smysl asi tak po 3-4 měsících programování v C++ a to si myslím, že jsem úplně blbej :/.

PHP › Filtrování dat z mysql
2. 4. 2015   #200961

#3 Rodgers23
Jak píše lukas, bude to tím ORem namísto ANDu.

Pro upřesnění, logické operátory fungují následovně:

OR: Pokud platí alespoň jedna z podmínek nebo více podmínek dohromady, pak se příkaz provede. V tvém případě vybíráš psy ze Zlína, jedna podmínka je pes, druhá je Zlín. Když se v databázi najde pes, už jedna podmínka platí a vypíšou se ti proto všechny řádky, které obsahují psa.

Opačně, když se v tabulce nachází řádek, obsahující položku Zlín, tak je jedna podmínka také splněná a vypíšou se ti všechna zvířata nacházející se ve Zlíně.

A do třetice, pokud budou splněny obě podmínky, tj. zvíře bude pes a ze Zlína, podmínka bude splněná rovněž a dojde k vypsání řádku taktéž.

AND: Pokud platí obě podmínky zároveň, teprve tehdy dojde ke splnění podmínky a může dojít k vypsání konkrétního řádku. Na stejném příkladě, hledáš psy a hledáš Zlín, pokud se najde řádek, který obsahuje psa, splní se jedna podmínka, ale pokud daný řádek nebude obsahovat Zlín, tak se celá podmínka zneguje (protože aby byl AND platný, je potřeba, aby byly platné všechny podmínky. A vice versa, najde se řádek, kde je sice Zlín, ale není tam pes, tak se také podmínka vyhodnotí jako neplatná, protože nejsou splněny všechny její části.

Naopak pokud se najde řádek, kde je druh pes a město Zlín, tak se obě části splní, podmínka se vyhodnotí jako splněná a řádek se vypíše.

C / C++ › Zápis do souboru
25. 3. 2015   #200710

#8 Judegarek
AAha, máš pravdu. Docela divný zadání.

C / C++ › Zápis do souboru
25. 3. 2015   #200708

#6 Judegarek
Trošku zbytečný cyklus ve funkci načtení jmen, když ti to nakonec stejně vrátí jedno jméno, ne?

C / C++ › bitpacking
19. 3. 2015   #200451

#9 oxidián
Tady se můžeš podívat, co jednotlivé parametry v konstruktoru vectoru znamenají.

C / C++ › bitpacking
19. 3. 2015   #200448

#7 oxidián
Tak v tom případě tomu normálně předej ten pointer, namísto &t1 jenom t1. Když tomu předáváš &t1, tak vlastně předáváš adresu na ukazatel, což překladač interpretuje jako ukazatel na ukazatel.

Za modifikací přístupových operátorů k atributům daných struktur si stojím.

C / C++ › Výber maximálnych hodnôt zo…
19. 3. 2015   #200445

#1 xxx7691
S polem charů se blbě pracuje při porovnání. Udělal bych si ještě ješte jednu strukturu, třeba ip adresa, obsahující 4 short inty (IPv4 má čtyři části), reprezentující jednotlivé sekce dané IP adresy a porovnávání pak prováděl na těchto čtyřech short integerech.

C / C++ › bitpacking
19. 3. 2015   #200444

#5 oxidián
Adresní operátor tam, předpokládám, je kvůli tomu, že je funkce tak nadefinovaná. Jsem jenom na mobilu, nicméně si myslím, že k tv_sec máš přistupovat přes "->", nikoliv přes ".".

Např. t2->tv_sec.

C / C++ › bitpacking
19. 3. 2015   #200442

#3 oxidián
Ano, s tím vektorem to je přesně tak. Timeval struktura je definována v sys/time.h a je to speciální struktura na měření časových intervalů.

C / C++ › bitpacking
19. 3. 2015   #200439

#1 oxidián
Vektor je normální dynamicky alokované pole, takže si musíš udělat funkce, které ti budou alokace řešit.

MySQL › MySQL Workbench EER diagram
17. 3. 2015   #200381

#2 peter
Dík za odpověď, zapomněl jsem téma označit jako vyřešené, vyřešil jsem problém asi den až dva dny poté, co jsem téma založil.

C / C++ › Četnost písmen v řetězci
10. 3. 2015   #200122

#4 PiranhaGreg
Supr práce, přesně takhle jsem to měl na mysli, akorát bych možná 26 nahradil řetězcem 'z' - 'a', z čehož je více poznat, co dané vzniklé číslo, 26, reprezentuje. :)

C / C++ › Četnost písmen v řetězci
10. 3. 2015   #200119

#1 Toom

Vytvořit si int pole o velikosti 'z' - 'a' a inicializovat ho na nulu. Projet celý řetězec for/while loopem, na každém indexu se podívat, co to je za char a na základě daného charu inkrementovat konkrétní index o jedna.

Ve finále projet původní int pole for loopem, podívat se na počet na daném indexu a když tam bude počet větší než jedna, daný index vypsat s tím, jaké písmeno se tam nachází.

C / C++ › problém se vzorcem
10. 3. 2015   #200115

#5 oxidián
Taky máš ten kód blbě, máš tam if (exp<=0), takže i když bude exponent 0, tak se ti vrátí nula, ale když je exponent nula, má se ti vrátit 1, nula se ti má vrátit pouze ve chvíli, kdy exponent bude menší než nula, ne menší nebo roven nula.

C / C++ › problém se vzorcem
10. 3. 2015   #200107

#1 oxidián
Hoď sem i definici ipow funkce, z tvého vzorku nepoznáme dost.

C / C++ › ipow
10. 3. 2015   #200096

#14 oxidián
Upřímně mi pořád nějak uniká, proč to řešit bitovými posuny, když to jde úplně v pohodě bez nich.

C / C++ › ipow
10. 3. 2015   #200089

#10 KIIV
KIIVe, nejsou ty výsledky stejně nějak mimo? 16 na -3 se určitě nerovná 4. Pochopil jsem doufám správně, že oxidián chce funkci na výpočet mocnin :D. Pokud jsem byl mimo, tak je problém mezi klávesnicí a židlí tady u mě.

PHP › rada z php zarovnanie atd..
10. 3. 2015   #200087

#3 evryl
Vždycky to můžeš hodit do tabulky a tabulku na střed vycentrovat.

A další z možností je nedávat Username a Password jako samotné elementy, ale tyto hodnoty nastavit jako placeholder u inputů. Tak jsem to udělal na jednom webu třeba já:

Připojen obrázek.

C / C++ › ipow
10. 3. 2015   #200086

#8 oxidián
Pokud chceš integer, pak modifikovaná funkce může vypadat takhle:

int ipow2(int base, int exp)
{
	double result = 1;
	int n = 0;
	if (!exp) // exponent nula -> výsledek 1
	{
		return 1;
	}
	else if (exp < 0) // pro int nejde, vrací se nula
	{
		return 0;
	}
	else
	{
		for (; n < exp; n++)
		{
			result *= base;
		}
		return result;
	}	
}
C / C++ › ipow
10. 3. 2015   #200081

#3 oxidián
Je taky možný celou funkci prostě předělat, aby fungovala. (Navíc jsem změnil návratový typ na double, aby šly vyjádřit i záporné mocniny.)

double ipow2(int base, int exp)
{
	double result = 1;
	int n = 0;
	if (!exp) // exponent nula -> výsledek 1
	{
		return result;
	}
	else if (exp < 0) // exponent záporný
	{
		exp *= -1;
		for (; n < exp; n++)
		{
			result *= base;
		}
		return (1 / result);
	}
	else
	{
		for (; n < exp; n++)
		{
			result *= base;
		}
		return result;
	}	
}

EDIT: Pochopitelně nevím, jak je na tom takhle funkce s výkonem, jediná optimalizace, která mě napadá, je hodit to do switche, namísto použití if-else formy. Netuším ovšem, zda se bitovými operátory něco šetří, neumím s nimi.

C / C++ › ipow
10. 3. 2015   #200075

#1 oxidián
Podívej se, co jednotlivé bitové operátory dělají, třeba tady. To by ti mělo pomoct k porozumění funkce a proč ti to padá :).

CorelDRAW › CorelDRAW mimo pracovní plochu
10. 3. 2015   #200074

#3 Jana
Corel do rastrových formátů vyexportuje to, co tam dodal uživatel, ne to, co tam dodá program sám. Pokud máš kreslící plochu třeba 30x40 cm a umístíš do ní elementy tak, že nesahají úplně k okrajům, ale chceš, ale výsledný rastrový soubor, třeba tebou zmíněný .jpg, měl velikost 30x40 cm, je třeba do dokumentu úplně dolů pod všechny vrstvy vložit vrstvu novou, obdélník s barvou pozadí, kterou chceš jako pozadí mít (u papíru asi pozadí bílé) a s rozměry celé kreslící plochy, tj. 30x40 cm.

Nicméně vzhledem k tomu, že máš dokument o tebou zmíněné velikosti A3, předpokládám, že ho budeš chtít tisknout, pak doporučuji spíš ukládat třeba do .pdf než do formátu rastrové grafiky.

Jak jsi změnila barvu na černou, tak to změnilo pouze podkladovou barvu programově, třeba se někomu tak lépe pracuje, v noci černá tolik nezatěžuje oči, nicméně to stále není něco, co tam dodal uživatel a proto Corel daný prvek při exportu ignoruje.

MySQL › co ze seznamu neni v databazi
9. 3. 2015   #200046

#1 peter
Úplně první, co mě napadne, je except select, čímž se dá docílit toho, co chceš, ale možná to půjde jinak, efektivněji, s databázemi moc nedělám.

C / C++ › Odřádkování bloku MSVS
3. 3. 2015   #199749

#1 Kenvelo
Hledáš ten tabulátorový posun, nebo takovou tu čáru, co ti zvýrazní scope?

Pokud řešíš tabulátorový posun, pak zde, pokud řešíš zobrazování čáry pro zvýraznění scopu, pak třeba tento doplněk.

Offtopic › Softwarový inženýr vs vývojá…
3. 3. 2015   #199734

#1 Anonym
Softwarový inženýr je člověk, který je zodpovědný za analýzu potřeb cílového zákazníka a návrh řešení, který by zákazníkovi vyhovoval, tj. potřeby splňoval. I když jsou softwaroví inženýři lidé, kteří většinou umějí programovat, nejsou oni těmi, kteří píšou kód, ale jsou zaměření na vývoj daného softwaru ze širší perspektivy, aby vyvíjený software dělal přesně to, co dělat má.

Ale především, je to člověk, který má inženýrský titul v daném odvětví a zkušenosti s vývojem softwaru dle (vhodných) inženýrských principů.

Programátoři jsou oproti tomu lidé, kteří jsou většinou zodpovědní pouze za samotné kódování. Pokud se pracuje na větším projektu, softwarový inženýři a architekti zpracují, co se bude dělat, a pak jednotlivých vývojářům nebo programátorům zadají konkrétní úlohy.

Vývojář je kategorie, která spadá mezi dvě kategorie výše zmíněné. Bývají to zpravidla lidé, kteří již programují delší dobu, znají proto nejen programování, nýbrž také (základní) principy procesu softwarového vývoje.

Pokud bys měl tedy porovnat lidi, kteří již v praxi něco zažili, pak SW inženýr bude lepší než vývojář a ten bude lepší než programátor. Softwarovým inženýrem se ale staneš teprve poté, co absolvuješ vysokou školu s daným zaměřením, oproti zbylým dvěma kategoriím, pro něž ti postačí tvé pouhé vědomosti.

Java › Odchytenie premennej v main…
24. 2. 2015   #199561

#3 Test556586
Pokud máš proměnnou uvnitř třídy, tak se k ní dá v Javě samozřejmě přistoupit, ale buď ji nastavíš jako public a potom bys k ní přistupoval 

tvojeTrida.promenna = 10;

anebo budeš mít proměnnou nastavenou jako private a pak si musíš k takové proměnné vytvořit getter a setter, jak už psal NotBeginner. To, co ty chceš udělat, je nesmysl, ale pokud bys měl danou proměnnou nastavenou jako public, pak by část tvého kódu mohla vypadat třeba následovně: 

public void run()
{
	Vlakno1 noveVlakno = new Vlakno1();
	noveVlakno.premenna = noveVlakno.premenna + 5;
}

Pokud bys nechtěl ve funkci run vytvářet nové vlákno, můžeš ho dané funkci předávat jako parametr a pak danou funkci volat s tím parametrem.

Nicméně ti doporučím naučit se základy objektového programování, máš tam docela mezery.

C / C++ › Školní projekt v C++ Filmotéka
11. 12. 2014   #197162

#1 Ondra
Budeš mít dva objekty, film a herec, jak píšeš. Skoro všechny proměnné jsou normální typy, akorát ID_herců v objektu film bude asi nejjednodušší implementovat jako vector ukazatelů na objekty herec (je lepší to udělat jako ukazatel, protože pak když jeden herec bude hrát ve více filmech můžeš změnit pouze parametry daného objektu herec a aktualizuje se ti to ve všech filmech).

C / C++ › Vlákno - Thread
24. 11. 2014   #196403

Tak vůbec první chyba je ta, že ti chybí při vyvolávání f-ce čas kulatý závorky. Ale na programování jsem blbej, takže chyba na 99% bude někde úplně jinde.

C / C++ › C# - programovani
24. 11. 2014   #196391

Dotazy ohledně jazyka C# mají být směřovány do diskuze .NET.

C / C++ › Beginner in C - Obrácení Pole
18. 11. 2014   #196158

#7 KIIV
Já jsem blbec, sorry. Jsem to jen přeběhl očima.

C / C++ › Beginner in C - Obrácení Pole
18. 11. 2014   #196154

A je opravdu nutný to otáčet? Není lepší si přes sizeof zjistit velikost pole, tu následně použít při druhém tisku akorát tisknout od nejvyššího prvku po nejmenší, tedy 

int posl = sizeof(pole) / sizeof(char)

for(int i = posl-1; posl >=0; posl--)
cout << pole[i] << "; ";

? Ušetříš tím operaci.

C / C++ › Načítání specifické proměnné…
18. 11. 2014   #196153

#2 Kenvelo
A to nevadí, že budu načítat do int i stringy (jak tam mám jméno a příjmení majitele účtu), nebo stringy to načítání úplně přeskočí, protože string do int nelze přiřadit?

Honza
Java › Java + Eclispe + MS Acces da…
18. 11. 2013   #184056

Nemam, jak ho mam prilinkovat?

Matrix17
C / C++ › který engine?
10. 5. 2012   #157688

#15 Doomista
Allegro není engine ale grafická knihovna a nevím o tom, že by ta knihovna měla problémy se stabilitou. Leda, že bys měl nejnovější betu, která je určená k testování novinek do novýho releasu.

#12 III
Jinak s ostatním bych asi souhlasil, záleží kolik máš zkušeností. Pokud moc ne tak bych asi spíš šáhl po Unity, pokud si na tom dobře tak můžeš zkusit i něco "těžšího". Konec konců Tech 4 engine už je taky uvolněnej tak můžeš zkusit třeba i ten. :)

Matrix17
C / C++ › Výpočet kořenů kvadratické r…
30. 9. 2011   #148066

scanf má jako návratovou hodnotu počet ÚSPĚŠNĚ přečtených údajů. V když načítáš např. tři takhle:

scanf("%d %d %d", &a, &b, &c);

Tak ti scanf může vrátit číslo 0 - 3 podle toho kolik si jich přečetl. Podle toho se pak můžeš zařídit...

Matrix17
C / C++ › ukoncenie programu
23. 8. 2011   #146654

Používá se tohle:

exit(cislo);

Matrx17
C / C++ › Pomoc s projektem do školy
3. 5. 2011   #141495

Pomoct myslíš jako ti to vypracovat nebo pomoct jako že řekneš kde si uvízl a my tě popošoupneme dál?

Matrix17
Offtopic › Typ súboru ovládača
22. 12. 2010   #137085

To yaqwsx : Přesně jak napsal Tom. Dodal bych jen, může zkusit oboje ale neřekl bych, že se mu něco z toho podaří. Každopádně držím palce. Třeba ho to přejde jako většinu z nás. :-D

Matrix17
Offtopic › Typ súboru ovládača
22. 12. 2010   #137077

To delphak : Teda prvně sem se až tak nepobavil ale těma 3GB si mě definitivně dostal do kolen. :-D Má to vypadat jako windows 3 a myslíš si že to bude 3GB po instalaci??? Fakt ti tu ty lidi radí dobře. Sou to lidi který programování rozumí a opravdu už napsali hodně řádků kódu. I když to bude trochu sebe chvála tak taky lecos umím a díky tomu sem pochopil že psát si OS jen proto abych nějakej napsal je prostě k ničemu. A jak vidím tak v tvým případě kdy jak sám říkáš nemáš ani pořádný základy je to až moc velkej projekt. Páč to co ty představuješ jako driver co řekne procesoru co chceš sem identifikoval snad správně jako boot loader. Když už bys teda nějak udělal ten, tak musíš pokračovat s nějakým jádrem OS (kernel) a pak ovladače a pak už se dostaneš na svoje tlačítka... Ale začít s interfacem když nic nemáš prostě nejde nebo teda de ale rozhodně nikdy OS nenapíšeš.

Matrix17
C / C++ › Dynamické násobení matic
12. 11. 2010   #135806

To "a" a "b" si inicializuj před tím než počítáč pole3. Protože takhle si někde mimo pole "a" i "b".
Tj.



a = pole1; b = pole2;
printf ("\nMatice C je: \n");

for (k = 0; k < o; k++)

{

*c += (*a++) * (*b+sloupec_b);

c++;

printf ("%d ", *(pole3+k));

}

Matrix17
Inzerce › New ON-line hra EVOLUTION
14. 10. 2010   #134579

To zeminem.cz@seznam.cz : Možná to vyzní tvrdě ale co vlastně umíš ty? Nechci tě urazit nebo se tě dotnout ale příde mi jako že scháníš lidi, kteří za tebe všechno udělají a ty to pak budeš jen spravovat a případně pokud to bude hodně kvalitní tak se snažit na tom i něco trhnout.

Matrix17
Offtopic › &quot;&quot;
19. 5. 2010   #129116

<> - alt + <>
[ ] - alt + F/G
{ } - alt + B/N

demo
C / C++ › ukazatele
6. 1. 2010   #122358

Zdravím,
v C jsem vcelku začátečník a mám následující problém s ukazateli. Jak mám zajistit aby když přiřadím do proměné "a" hodnotu 12 abych s ní mohl pracovat i ve funkci main? vím že tam mám něco blbě ale nevím co.


void test(int *a)
{
a = (int*)malloc(sizeof(int));
a = 12;
}

int main()
{
int *a;
test(&a);
printf("%d", a);
return 0;
}

Matrix17
C / C++ › while
7. 12. 2009   #120788

Nahradit by se to dalo třeba takhle:



int i(int u)
{
int L=0;
do {
u = u / 10;
L++;
}while (u !=0);
return L;
}

Jak už psal KIIV fce vrací počet cifer čísla v daný soustavě.
Tohle je psaný pro desítkovou tj. pro číslo 123 to vrátí číslo 3.

Podhy
› dotaz zmena typu
4. 6. 2009   #110103

SELECT sloupec_typu_timestamp::date,
sloupec_typu_timestamp::time
FROM foo;

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý