IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Machr na PHP - Skript pro počítání návštěv

Aktivity
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:26.8.2013 17:13

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
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Michal Žůrek - misaz:26.8.2013 17:15

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

 
Nahoru Odpovědět
26.8.2013 17:15
Avatar
Odpovídá na David Hartinger
Michael Olšavský:26.8.2013 17:23

Jak0koliv technoologie? Google Analytics... :D

 
Nahoru Odpovědět
26.8.2013 17:23
Avatar
Odpovídá na Michael Olšavský
Michal Žůrek - misaz:26.8.2013 17:24

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

 
Nahoru Odpovědět
26.8.2013 17:24
Avatar
Odpovídá na Michael Olšavský
Neaktivní uživatel:26.8.2013 17:25

BlueBoard počítadlo ]:>

Nahoru Odpovědět
26.8.2013 17:25
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:26.8.2013 20:08

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

 
Nahoru Odpovědět
26.8.2013 20:08
Avatar
KlimiCZ
Člen
Avatar
KlimiCZ:26.8.2013 21:16

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
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:26.8.2013 21:20

Správný borec použije AJAX :)

Nahoru Odpovědět
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:27.8.2013 11:45

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:27.8.2013 12:19

David Hartinger 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
Odpovídá na KlimiCZ
Neaktivní uživatel:27.8.2013 19:41

"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
27.8.2013 19:41
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:29.8.2013 19:39

Zapojuji se do soutěže :P
http://projekty.danvitek.cz/…dlo-navstev/

Nahoru Odpovědět
29.8.2013 19:39
Neaktivní uživatelský účet
Avatar
coderex213
Člen
Avatar
Odpovídá na David Hartinger
coderex213:29.8.2013 21:56

Muzu pouzit Google Chart API?

 
Nahoru Odpovědět
29.8.2013 21:56
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na coderex213
Theodor Johnson:29.8.2013 22:03

Ne, je to soutěž o vlastní skript

Nahoru Odpovědět
29.8.2013 22:03
Mo8ilε 15 Ѐλđ
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
David Hynek:29.8.2013 22:41

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
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:29.8.2013 22:51

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:1.9.2013 15:20

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
Avatar
Odpovídá na Michal Žůrek - misaz
Michal Žůrek - misaz:1.9.2013 15:24

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
Avatar
Michael Olšavský:1.9.2013 17:57

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
Neaktivní uživatel:1.9.2013 18:02

Ták, končíme :)

Nahoru Odpovědět
1.9.2013 18:02
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:1.9.2013 18:20

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
Odpovídá na Kit
Neaktivní uživatel:1.9.2013 18:32

:D
ale David Hartinger nám nějak zaspal :D

Nahoru Odpovědět
1.9.2013 18:32
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:1.9.2013 18:39

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

Nahoru Odpovědět
1.9.2013 18:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:1.9.2013 19:34

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:1.9.2013 19:44

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:1.9.2013 19:45

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:1.9.2013 19:50

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:1.9.2013 19:52

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:1.9.2013 19:55

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:1.9.2013 19:56

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

Nahoru Odpovědět
1.9.2013 19:56
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:1.9.2013 19:57

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:1.9.2013 20:20

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
1.9.2013 20:20
Avatar
Odpovídá na David Hartinger
Michael Olšavský:1.9.2013 20:29

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 Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:1.9.2013 20:42

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
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Michal Žůrek - misaz
David Hartinger:1.9.2013 20:46

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
You are the greatest project you will ever work on.
Avatar
Michael Olšavský:1.9.2013 20:47

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 Hartinger
Vlastník
Avatar
Odpovídá na Michael Olšavský
David Hartinger:1.9.2013 20:49

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

Nahoru Odpovědět
1.9.2013 20:49
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:1.9.2013 20:50

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.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ý:1.9.2013 20:58

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.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.