Diskuze: Machr na PHP - Připomínač narozenin

PHP PHP Machr na PHP - Připomínač narozenin American English version English version

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ahoj, další kolo webové minisoutěže o placku Machr na PHP se statným slonem a o samolepky je tady!

Jelikož jsme ještě nepracovali s databází, měli bychom to napravit. Zadání není nijak složité a aplikace se vám může i poté hodit. Půjde o připomínač narozenin. V databázi si vytvořte tabulku s několika uživateli a jejich narozeninami. Když aplikaci spustíme, vypíše za jak dlouho jsou nejbližší narozeniny (tedy za kolik dní je má nejbližší z uživatelů) a ideálně kolik mu bude let :)

Pro práci s databází se snažte použít ovladač PDO. Aplikace nemusí obsahovat editor uživatelů, stačí odevzdat export databáze s několika uživateli pro otestování.

Deadline si dejme zas v neděli 16.6. v 15:00.

Odpovědět 10.6.2013 17:51
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Michal Žůrek (misaz):

no počkat? To jsou teďkom soutěže 3?

Nahoru Odpovědět 10.6.2013 17:56
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

Je tu někde nějaký článek jak s databazemi pracovat přes PHP?

Nahoru Odpovědět 10.6.2013 17:57
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Nahoru Odpovědět 10.6.2013 18:00
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Čápka:

Devbook je vlastně rozdělen do 3 částí: aplikace, weby a hry. Každá část bude mít svoji soutěž. O databázích v PHP toho spoustu napsal Kit - http://www.itnetwork.cz/…sql-databazi

Nahoru Odpovědět 10.6.2013 18:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Co všechno to má tedy poskytovat ? Bude se řešit i design ? Nebo stačí nějaký pěkný kód, který prostě vypíše kdo má nejblíže narozeniny ? Dělám teď ještě závěrečku do školy z programování (ano ten engine). Takže uvidím jak to stihnu, ale rád bych tohle zkusil :)

Nahoru Odpovědět 10.6.2013 18:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Je to o práci s databází a datem, UI se neřeší :)

Nahoru Odpovědět 10.6.2013 18:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

Nevidím nikde zmínku o výstupu v HTML, takže se zřejmě má jednat o aplikaci CLI na 3 řádky :)

Nahoru Odpovědět 10.6.2013 18:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Ok :) Takže pouze vypíše nejbližší narozeniny a za jak dlouho... fajn pokusím se něco vytvořit .Zítra mám dvě hodiny webů, možná budu dělat ten engine, možná udělám tohle .. uvidím , mám je od 7:00 tka záleží jak se bude chtít :D

Nahoru Odpovědět 10.6.2013 18:41
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Taky zkusím něco vymyslet :D

 
Nahoru Odpovědět 10.6.2013 18:46
Avatar
Hejt
Neregistrovaný
Avatar
Hejt:

co to je PDO? :D

 
Nahoru Odpovědět 10.6.2013 18:56
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Hejt
David Čápka:

Databázový ovladač PHP.

Nahoru Odpovědět 10.6.2013 19:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Jiný ovladač DB než PDO by se už neměl používat. Ostatní jsou zastaralé.

Nahoru Odpovědět 10.6.2013 19:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
aleš
Neregistrovaný
Avatar
aleš:

a co mysqli?

 
Nahoru Odpovědět 10.6.2013 21:24
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Ten taky :D

 
Nahoru Odpovědět 10.6.2013 22:12
Avatar
Kit
Redaktor
Avatar
Odpovídá na aleš
Kit:

MySQLi je jen mezičlánek mezi ovladačem MySQL a PDO. Můžeš ho přeskočit.

Nahoru Odpovědět 11.6.2013 10:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Filip Pýrek
Redaktor
Avatar
Filip Pýrek:

Tak tady to je: http://bit.ly/11yzMls :)

Editováno 13.6.2013 19:35
Nahoru Odpovědět 13.6.2013 19:33
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Filip Pýrek
Daniel Vítek:

Být tebou tak sem ty zdrojáky radši nedávám... Spíš to pošli sdracovi do PM

 
Nahoru Odpovědět 14.6.2013 13:56
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

PHP od něj rozhodně nezkopíruji. Maximálně tabulku, pokud by se mi nechtělo ji vymýšlet.

Nahoru Odpovědět 14.6.2013 14:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Filip Pýrek
Redaktor
Avatar
Nahoru Odpovědět 14.6.2013 15:35
„The best way to predict the future is to invent it.“ — Alan Kay
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Chceš to i s generováním výstupu v HTML? Samotné PHP má v mém případě jen asi 5 řádek.

Nahoru Odpovědět 14.6.2013 15:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

5 řádek? tak to bude užitečný a do budoucna určitě použitelný ^^

Nahoru Odpovědět 14.6.2013 18:49
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Vešlo by se, ale rozepsal jsem parametry konstruktoru, aby to bylo názornější. Také SQL dotaz jsem raději rozepsal na 6 řádek. Ošetřil jsem i výjimky, takže to nějakých 15 řádek jistí :)

Nahoru Odpovědět 14.6.2013 19:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

to já jsem se trošku rozkódil :) jednoduše se mi to dělat nechtělo ;) jen ať to je pěkně použitelné na příště

Nahoru Odpovědět 14.6.2013 19:45
Коммунизм для нашего будущего!
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Зайчик
Jiří Gracík:

//chrchly chrchly výmluvy chrchly chrchly, už je ten kašel dobrý :D

Nahoru Odpovědět 14.6.2013 19:47
Creating websites is awesome till you see the result in another browser ...
Avatar
Зайчик
Člen
Avatar
Odpovídá na Jiří Gracík
Зайчик:

co je na tom za výmluvy? 90% toho co draco chce jde přes SQL dotaz

Editováno 14.6.2013 19:49
Nahoru Odpovědět  +2 14.6.2013 19:49
Коммунизм для нашего будущего!
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Зайчик
Jiří Gracík:

V klidu, dělám si srandu, neber se tak vážně :)

Nahoru Odpovědět 14.6.2013 19:49
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Je fakt, že jsem to nejprve kompletně napsal v SQL a teprve pak to zabalil do PHP.

Nahoru Odpovědět 14.6.2013 21:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

už se těším až uvidíš mojí práci docela se mi to líbí ;)

  • s html se moc babrat nebudu
  • melo by to jít krásně importovat do projektu
require 'birthday/loader.php';
$users = new User();
foreach($users->getLast() AS $value)
   echo 'brzo bude mit narozky uzivatel ' . $value->name;

EDIT : použil jsem tam magic method takže to jde krasně :)

Editováno 14.6.2013 21:13
Nahoru Odpovědět 14.6.2013 21:11
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Зайчик:

už mě to nebaví tak to když tak můžete někdo použít :) a celý to dodělat šel by z toho udělat super "manager" pár úprav a je to :) mě už to omrzelo :D

// Connection.php

<?php
class Connection{

    private $database = NULL;
    private $config = Array(
        "user" => "root",
        "pass" => "",
        "db"   => "birthday",
        "con"  => "127.0.0.1;",
    );

    protected function connect(){
        $this->database = new PDO(
            'mysql:host='.$this->config["con"].'dbname='.$this->config["db"],
            $this->config["user"],
            $this->config["pass"],
            array( PDO::ATTR_PERSISTENT => false)
        );
    }

    public function sendData($query){
        if($this->database != NULL)
            $this->database->query($query);
    }

    public function getData($query){
        if($this->database != NULL)
            return $this->database->query($query);
    }

    public function disconnect(){
        // Just die bitch...
        die(); // okay :(
    }
}

// Action.php by se jestě mohl dodělat nejspíš bude potřeba require User a connection nwm jestli je dobře to mít v jednom souboru nebo rozdělit do samostatnejch tříd.. nwm php neumím

<?php

if(isset($_POST["name"]) && isset($_GET["method"]))
    new Add($_POST, $_GET["method"]);

class Add{

    private $user = null;

    function __construct($post, $method){
        $this->user = new User();
        switch($method){
            case "add" : $this->addBirthday($post);
                break;
            case "edit": $this->editBirthday($post);
                break;
            case "delete": $this->deleteBirthday($post["id"]);
                break;
        }
    }

    private function addBirthday($post){
        $this->user->newModel($post["name"], $post["year"]."-".$post["month"]."-".$post["day"]);
        $this->user->add();
    }

    private function editBirthday($post){
        $this->user->newModel($post["name"], $post["year"]."-".$post["month"]."-".$post["day"], $post["id"]);
        $this->user->edit();
    }

    private function deleteBirthday($id){
        $this->user->id = $id;
        $this->user->delete();
    }
}

// a user.php

<?php

class User extends Connection{

    private $cArray = array();

    function __construct(){
        $this->connect();
    }

    public function newModel($name, $date, $id = NULL){
        $dat = explode("-",$date);
        $this->cArray["id"] = ($id == NULL ? NULL : $id);
        $this->cArray["name"] = $name;
        $this->cArray["year"] = $dat[0];
        $this->cArray["month"] = $dat[1];
        $this->cArray["day"] = $dat[2];
        $this->getDate();
    }

    public function __get($index){
        return $this->cArray[$index];
    }

    public function __set($index, $value){
        $this->cArray[$index] = $value;
    }

    public function add(){
        $this->sendData(
          'INSERT INTO birthday (name,year,month,day)
           VALUES("'.$this->cArray["name"].'","'.$this->cArray["year"]
          .'","'.$this->cArray["month"].'","'.$this->cArray["day"].'");'
        );
    }

    public function edit(){
        $this->sendData(
            'UPDATE birthday SET
            name="'.$this->cArray["name"].'",
            year="'.$this->cArray["year"].'",
            month="'.$this->cArray["month"].'",
            day="'.$this->cArray["day"].'"
            WHERE id="'.$this->cArray["id"].'";'
        );
    }

    public function delete(){
        $this->sendData(
            'DELETE FROM birthday WHERE id="'.$this->cArray["id"].'";'
        );
    }

    public function getLast(){
        return $this->get(
            'SELECT * FROM birthday WHERE month >='.date("m")." AND day >=".date("d").";"
        );
    }

    public function getAll(){
        return $this->get('SELECT * FROM birthday;');
    }

    private function get($query){
        $i = 0; $array = array();
        $item = $this->getData($query);
        while($it = $item->fetch(PDO::FETCH_ASSOC)){
            $array[$i] = new User();
            $array[$i]->newModel($it["name"], $it["year"] . "-". $it["month"] ."-".$it["day"], $it["id"]);
            $i++;
        }
        return $array;
    }

    private function getDate(){
        $this->cArray["countM"] = ($this->cArray["month"] - date("m"));
        $this->cArray["countD"] = ($this->cArray["day"] - date("d"));
        $this->cArray["countY"] = date("Y") - $this->cArray["year"];
    }

    function __destruct(){
        $this->disconnect();
    }
}

Chtěl jsem mít unixovej čas na narozeniny a pak mi kámoš připoměl, že je to od roku 1970 takže to nestačí tak jsem se s*al s date typem a na to asi nemam dostatečný znalosti SQL abych to porovnával podobným stylem jako to mám teď takže v DB nic moc ale myslím že KIT by vypeklil takovej SELECT že bych mohl vypustit pár řádků na explode atd.

// no a teď nějaký example ale to je snad jasný podle kódu

getLast()// vratí pole nejbližších narozenin kdyby náhodou mělo víc lidi ve stejný den
getAll() // vrací všechny narozeniny
add() // přidá narozeniny do db
edit() // editace
delete() // smazání narozenin

//getovat si různý blbosti jde jednoduše např
$user = new User();
foreach($user->getLast() AS $value)
   echo $value->name; // vypíš jméno
// pak je tam samozřejmě
countM,countD // kolik mesicu a dnu zbejva do narozenin
countY // kolik mu je let
name // jméno člověka
year,month,day // kdy se narodil

EDIT : jo a sql

create table birthday(
id INT UNSIGNED NOT NULL PRIMARY KEY UNIQUE AUTO_INCREMENT,
name VARCHAR(255),
year SMALLINT,
month SMALLINT,
day SMALLINT);
Editováno 14.6.2013 23:58
Nahoru Odpovědět 14.6.2013 23:56
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Slyšel jsi někdy o datovém typu DATE?

Nahoru Odpovědět 15.6.2013 10:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

To se týká TIMESTAMP, ale DATE a DATETIME funguje OK.

Nahoru Odpovědět 15.6.2013 10:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

měl jsem tam date type pak jsem měl ale problém tahat z DB přesně to co chci pomocí SQL. Musel bych to řešit až uvnitř.

SELECT * FROM birthday WHERE month >='.date("m")." AND day >=".date("d").";"

Tím si pěkně vytáhnu posledního a je to ;) s DATE jsem měl problém :D neznám všechny vychytávky a funkce v SQL abych si to mohl tahat tak jako tu mi to vždy vracelo prvního narozenýho což mi bylo k ničemu

Editováno 15.6.2013 11:30
Nahoru Odpovědět 15.6.2013 11:27
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Tu podmínku máš špatně.

Nahoru Odpovědět 15.6.2013 13:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Tak hotovo zítra to sem dám :D

 
Nahoru Odpovědět 15.6.2013 21:36
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

My máme narozeniny uloženy jako timestamp a problém s tím není. Před rokem 1970 je hodnota prostě záporná.

Nahoru Odpovědět 16.6.2013 9:40
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Michal Žůrek (misaz):

Ahoj,
i já zde přidávám výtvor, stihl jsem to tak tak. http://uloz.to/…az-final-zip

návod na zprovoznění
na localhostu si v phpmyadmin vytvořte databázi narozeniny. V databázi narozeniny vytvořte tabulku machr24. Pak si zkopírujte soubory ze zipu. Pro naplnění tabulky ukázkovými daty spusttě soubor sample.php. Pak už jednoduše index.html.

No protože na localhostu je pořád leden roku 70, tak do url k indexu ještě přidejte

?year=2013&month=05

kde hodnota year udává rok, který chte použít a month udává měsíc.

Kdybych náhodou vyhrál, tak už teda nevím co za placku si vzít (nicméně mi můžete poradit, už mám c#, php a algoritmy). :D

Editováno 16.6.2013 14:26
Nahoru Odpovědět 16.6.2013 14:26
Nesnáším {}, proto se jim vyhýbám.
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Poslal jsem svůj výtvor David Čápkavi tak doufám že na mě nezapomene :D :D

 
Nahoru Odpovědět 16.6.2013 14:38
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 16.6.2013 14:39
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Trochu jsem na těch zdrojákách vytuhl, než jsem se tím prokousal. Došel jsem k následujícímu pořadí:

1. Kit (100 bodů) - Všechnu logiku schoval do krátkého SQL dotazu, aplikace je minimalistická a velmi přehledná. Napiš prosím x, kterou placku chceš.
2. FilipPyrek (90 bodů) - Nějak podobně bych to asi dělal já.
3. fuulll (80 bodů) - Tvůj kód mi dal opravdu zabrat, v nějakých ohledech je docela zajímavý, v jiných ale zbytečně komplikovaný (např. vlastní selection sort, když lze použít třídící funkce, co nabízí PHP).
4. Misaz (60 bodů) - Stáří počítáš jen jako rozdíl roků, v kódu máš SQL injekce, měl bys používat prepared statements, vzi třeba tady (ty otazníky v SQL dotazu) - http://www.itnetwork.cz/php/mvc-modely.

Jako vždy děkuji za účast a budu se těšit příště :)

Editováno 16.6.2013 16:00
Nahoru Odpovědět  +1 16.6.2013 16:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Super, díky za skvělé slovní hodnocení. Škoda jen, že není placka "Machr na SQL", ta by se mi líbila :)

Nahoru Odpovědět  +1 16.6.2013 16:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

No, nejblíže jsou algoritmy :)

Nahoru Odpovědět  +1 16.6.2013 17:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:

Nikde tu nevidím link na Kitův výtvor... :P

Editováno 16.6.2013 19:05
 
Nahoru Odpovědět  +1 16.6.2013 19:04
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět  +2 16.6.2013 20:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:

Wow, ono to bylo tak lehký ? :D

 
Nahoru Odpovědět 16.6.2013 20:21
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

Snažil jsem se to napsat co nejnázorněji. Ve view jsem řešil projekci tak, aby se to dalo použít na více způsobů. V selectu jsem pak udělal jen sort a limit. Místo seznamu sloupců se sice dá napsat "*", ale moc rád to nemám.

Nahoru Odpovědět 16.6.2013 22:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

Já pořád nevěděl jak vybrat toho co bude mít teď :D

 
Nahoru Odpovědět 17.6.2013 10:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

To jsem tam přidával až dodatečně, aby u něj byla 0. Proto mám v pohledu posunutí o 1 den.

Nahoru Odpovědět 17.6.2013 10:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět  +4 27.8.2013 14:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michal Žůrek (misaz):

to existuje placka i na SQL?

Nahoru Odpovědět 27.8.2013 14:57
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:

Jak vidíš, tak existuje. Jedna jediná :)

Nahoru Odpovědět 27.8.2013 14:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michal Žůrek (misaz):

Jaké všechny placky existují?

Nahoru Odpovědět 27.8.2013 15:00
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:

Tuhle nechal David Čápka udělat speciálně pro mne, viz výše. Záleží jen na návrhu, který dodá výrobci těch placek.

Nahoru Odpovědět 27.8.2013 15:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Honza Bittner
Redaktor
Avatar
Nahoru Odpovědět  +2 27.8.2013 15:48
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 55 zpráv z 55.