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

Ahoj kluci, v týdenní minisoutěži si zkusíme vytvořit něco praktického. Hrát se bude o modrou placku s majestátním slonem "Machr na PHP" a samolepky. Vytvořte skript pro zaznamenávání návštěv webu. Máte úplně volné ruce, můžete využít jakých technologií chcete, jen by zápis návštěvy neměl být dlouhá operace, aby nezpomalovala web. Ke skriptu by měl být ještě druhý, který ukazuje uloženou návštěvnost. Je už na vás, jestli jen vypíšete dny a počet návštěv nebo si troufnete třeba na graf.

Zadání lze splnit velmi jednoduše nebo i poměrně sofistikovaně, kdy budete hlídat aby se ten samý člověk nezapočítal 2x a podobně. Určitě si to zkuste, ať už jednoduše, tak složitě, protože se vám to určitě hodí na osobním webu :) Čas si dejme jako vždy do neděle 1.9.2013 do 18:00.

Odpovědět 26.8.2013 17:13
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
Odpovídá na David Čápka
Michal Žůrek (misaz):

to na mém webu mám, nicméně nastal čas to vylepšit. :)

Nahoru Odpovědět 26.8.2013 17:15
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Čápka
Michael Olšavský:

Jak0koliv technoologie? Google Analytics... :D

 
Nahoru Odpovědět  +2 26.8.2013 17:23
Avatar
Odpovídá na Michael Olšavský
Michal Žůrek (misaz):

to zřejmě ale nebude řešení machra.

Nahoru Odpovědět 26.8.2013 17:24
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět  +1 26.8.2013 17:25
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na Jiří Gracík
Michal Žůrek (misaz):

předpokládám že taky není řešení pro nás (borce).

Nahoru Odpovědět  -1 26.8.2013 20:08
Nesnáším {}, proto se jim vyhýbám.
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:

Musí tam být taky grafika ?

Nahoru Odpovědět 26.8.2013 21:16
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:

Správný borec použije AJAX :)

Nahoru Odpovědět  +2 26.8.2013 21:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
coderex213
Člen
Avatar
coderex213:

Je mozne, pokud se musi upravit php.ini, nahradit ho nejakym skriptem treti strany?

 
Nahoru Odpovědět 27.8.2013 11:45
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:

David Čápka musí tam být grafika ?

Nahoru Odpovědět 27.8.2013 12:19
Nesnaž se zakrýt něco, co jsi provedl úmyslně. Svět je tak malý, že dotyčný se to stejně dozví.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na KlimiCZ
Daniel Vítek:

"Je už na vás, jestli jen vypíšete dny a počet návštěv nebo si troufnete třeba na graf."

 
Nahoru Odpovědět  +2 27.8.2013 19:41
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Avatar
coderex213
Člen
Avatar
Odpovídá na David Čápka
coderex213:

Muzu pouzit Google Chart API?

 
Nahoru Odpovědět 29.8.2013 21:56
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coderex213
Theodor Johnson:

Ne, je to soutěž o vlastní skript

Nahoru Odpovědět 29.8.2013 22:03
Přecházím na "Cross-Platform Development"
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Daniel Vítek
David Hynek:

když děláš výpisy, zkus používat konce řádků a tabulátory, i vygenerovaný HTML může vypadat pěkně.

Nahoru Odpovědět 29.8.2013 22:41
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Hynek
Kit:

Když se použije vhodný editor, tak to zpravidla odsazuje samo.

Velmi hezké HTML mi leze z PHP třídy XMLwriter.

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

Ahoj, tak zde posílám své řešení. Skript má 2 části, první je primitivní PHP, které do databáze vloží záznam. Druhá část už je psaná v javě, jednou sem se prostě musel naučit v javě pracovat s MySQL. Vzhledem k tomu že nemám moc časo, protože nejsem doma, tak jsem to ani nestihl moc dostat. Aplikace není ani trochu OOP a dokumentace je otřesná, ale umí zanalyzovat i jaký uživatel má prohlížeč a OS.
http://uloz.to/…-navstev-zip

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

ještě dodám že potřeujete databázi navstevy s tabulkou navstevnici se sloupcii
ip
datetime
agent
page

page zatím není implementováno.

Nahoru Odpovědět 1.9.2013 15:24
Nesnáším {}, proto se jim vyhýbám.
Avatar
Michael Olšavský:

Přidávám svou verzi. Jede to v PHP a za pomoci AJAXU, zde si to můžete vyzkoušet: http://www.mvc.mzf.cz/…database.php
Zde je link ke zdrojákům.
https://drive.google.com/folderview?…

Věci jako stejný uživatel řeším přes databázi(unikátní index). Aplikace také umí vybrat nejvícekrát použitý browser(znovu řešeno přes SQL)

Editováno 1.9.2013 17:59
 
Nahoru Odpovědět 1.9.2013 17:57
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

Ták, končíme :)

 
Nahoru Odpovědět 1.9.2013 18:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

Ještě jsem ani nezačal :)

Nahoru Odpovědět 1.9.2013 18:20
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
 
Nahoru Odpovědět 1.9.2013 18:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

Vidím, že jsem minimálně jednoho soutěžícího potěšil :)

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

Zaznamenal jsem jen 3 lidi, tak se alespoň mohu pořádně rozpovídat :P

DanVitek
Ten kód dává smysl, nicméně trpí vážnými nedostatky. Již jsem ti ty samé vytýkal minule. Třídy se píší do samostatných souborů. Soubor tridy.php není dobrý nápad. Předpokládám, že to píšeš v nějakém PSPadu, protože kód není vůbec odsazený, je špatně čitelný a v celé té nudli je jen jeden komentář. Přístup, který si zvolil, by na nějakém menším webu asi postačoval, ale volat ty 2 SELECTYy a INSERT při každém zobrazení webu by od určité (ne moc vysoké) návštěvnosti nebylo reálné. Stále používáš zastaralý MySQL ovladač a stále nesprávně ošetřuješ proměnné, které do dotazů vkládáš.

Misaz
Zápis řešíš jedním INSERTem do tabulky, to by u průměrného webu rychlostně určitě stačilo, u větších by se to muselo logovat do souborů a zapisovat potom do DB dávkově. Sice je soutěž pro PHP, ale je tu zvykem psát aplikace v tom, co je zrovna po ruce, takže jsem se pustil do té tvé JAVA aplikace. Problém bude ale v tom, že většina webhostingů neposkytuje vzdálený přístup k MySQL databázi, takže v praxi by tento způsob nešel použít. Jedině, že bys aplikaci spustil přímo na serveru, kde běží ta MySQL databáze. Asi by to v reálu dopadlo tak, že by sis udělal export ze serveru a ten si potom projel na localu v té Javě. Nicméně vypadá to pěkně. Nevím, jak by se chovalo na velkých datech že máš zobrazení v objektu, možná by to bylo potom potřeba přebušit do nějakých polí, protože Java nemá struct.

brisingr002
Ukládání opět INSERTem, Counter.php vypadá kompaktně, v database.php jsem se zalekl toho $GLOBALS a schoval se pod stůl :D Vlastně nevím proč to tam je, nikde jinde to nepoužíváš. Proměnné se stejně po skončení skriptu smažou, takže to tam ani nezůstane. Je škoda, že tam máš jen unikátní návštěvníky, chtělo by to i návštěvy a zobrazení, přitom to není složitý dotaz.

Nejdále se tu dostal tedy Michal Žůrek (misaz), i když s tou Javou mi to připadá překombinované :) Získává tedy placku, napiš Míše jakou chceš. Brisingrovi by stačil kousek, těším se na něj příště.

Nahoru Odpovědět 1.9.2013 19:34
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:

Pokud ti vadí INSERT, použij jinou databázi.

S tím logováním do souborů a dávkovým zápisem do DB jsi to přehnal. Tak se to opravdu nedělá.

Nahoru Odpovědět 1.9.2013 19:44
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:

Proč by se to nedělalo? Mám dojem, že jsi mi to radil dokonce ty :) Je to navíc atomická operace.

Nahoru Odpovědět 1.9.2013 19:45
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:

INSERT je atomická operace. Pokud potřebuješ výkon při zápisu (typické pro logování), tak to můžeš zapisovat do logu, ale už nesmíš vyhodnocovat závislosti typu unikátnost záznamu. Pouze logování. V tom případě ale databázi vůbec nepoužiješ.

Nahoru Odpovědět 1.9.2013 19:50
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:

Tak samozřejmě, budu to prát do souboru a pak si to nachroustám do databáze, když na rychlosti nezáleží. Tam si mohu dovolit spouštět analýzy a řešit unikátnost.

Nahoru Odpovědět 1.9.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:

Koukám, že v podmínkách nebyla uvedena podmínka využití databáze. Logování přístupů do souboru a jeho následná analýza by byla výhodnější, pokud by k té analýze přistupoval pouze admin, což by splnilo zadání.

Nahoru Odpovědět 1.9.2013 19:55
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:

Ano, proto nechápu co jsem tedy přehnal :P

Nahoru Odpovědět 1.9.2013 19:56
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:

Ještě pro usnadnění logování jeden tip:
http://dev.mysql.com/…-engine.html

Napsal jsi to tak, že jsem si to vyložil jinak.

Editováno 1.9.2013 19:58
Nahoru Odpovědět 1.9.2013 19:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Žůrek (misaz):

ty si ze mě děláš srandu? To jako vyhraju s takovým paskvilem, nicméně to co jsi vypsal je fakt. Javová aplikace není do reálného nasazení, nicméně jsem se chtěl naučit práci s databázi v javě a to se i povedlo. Vezmu si placku na javu, protože nové znalosti se týkaly právě javy. kdybych se nic nenaučil tak si za toto žádnou placku nevezmu.

Totiž ses na kód v javě asi nedíval moc důkladně, že: :) Tímto nedodělkem jsem však všem chtěl ZDE ukázat že Machr není vyloženě soutěž ale spíš nás má donutit se něco nového naučit. To píši všem těm kteří tu kód skrývají tak že ty dokazy nedávají sem (někteří ani po skončení soutěže), ale tobě do PM. přeci jestliže se chceme přiučit, poučit ostatní o chybách a získat o naší práci názor, tak ji není třeba skrývat. Kdybych toto zde nechtěl napsat, tak tu ten výtvor ani není.

Nahoru Odpovědět  +4 1.9.2013 20:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Čápka
Michael Olšavský:

Nevím proč nepoužívat insert, nezdá se mi to jako problém. Globals jsem použil proto, abych ulehčil serveru vytváření proměnné. Zdálo se mi nepohodlné vytvářet objekt při každé aktualizaci znovu. Takhle ulehčím čas procesoru. Proto to GLOBALS. Pustil jsem se do toho půl hodiny před ukončením, takže proto jsem nestihl úplně vše co bych chtěl, nicméně se mi zdá zbytečné počítat každé zobrazení stránky. Není to jen na unikátní návštěvníky, návštěvníci se každý den mohou připsat znovu. Ale každopádně díky :-) a gratuluji misazovi, ikdyž moc nechápu proč to kombinoval s javou.

 
Nahoru Odpovědět 1.9.2013 20:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michael Olšavský
David Čápka:

Ale globals není perzistentní, ztratí se po dokončení requestu. Vytvoření objektu není žádná zátěž, jediná zátěž ve webové aplikaci je databáze. Vím jak je započítáváš, protože jsem ten kód četl. Zobrazení ukládáš, proč je tedy nezahrnout i do statistik?

Nahoru Odpovědět 1.9.2013 20:42
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
Odpovídá na Michal Žůrek (misaz)
David Čápka:

Na kód jsem se díval poměrně důkladně, jinak bych ti k tomu nenapsal to, co jsem napsal. Samozřejmě nemohu u všech lidí zkontrolovat každou řádku, to ti je snad jasné, někdy se přihlásí dost lidí. Jelikož se zde zúčastnili jen 3 lidé, tak jsi z toho vyšel nejlépe. Přijde mi lepší dát cenu někomu než nikomu, ale jestli ji nechceš, nenutím ti ji :)

Nahoru Odpovědět 1.9.2013 20:46
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
Michael Olšavský:

Aha. Moje chyba. Sakra. A já měl zato, že to poté bude jeden objekt a nebudou se jich tvořit desítky... Ano s tím zobrazováním jsem to mohl udělat, ale už nebyl čas. Vážně jsem se rozhodl do toho jít asi půl hodiny předtím a dost dlouho mi zabralo i to vymýšlení jak uložit ten objekt. A ještě je to špatně... :D

 
Nahoru Odpovědět 1.9.2013 20:47
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michael Olšavský
David Čápka:

Jak jsem psal, chybělo ti málo :)

Nahoru Odpovědět 1.9.2013 20:49
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 Michael Olšavský
Kit:

Vidíš, kdyby ses nezúčastnil soutěže, tak bys ani netušil, že GLOBALS je zbytečné, přesněji na dvě věci. Víš na které...

Nahoru Odpovědět  +1 1.9.2013 20:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michael Olšavský:

Jojo. Jsem rád, že tu ty soutěže jsou. Alespoň mě to donutí použít něco, co bych normálně nepoužil a zamyslet se i nad naprosto absurdními věcmi. :-)

 
Nahoru Odpovědět  +1 1.9.2013 20:58
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 40 zpráv z 40.