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.
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
Zaznamenal jsem jen 3 lidi, tak se alespoň mohu pořádně rozpovídat
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 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ě.
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š.
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.
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í.
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í.
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.
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?
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
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ě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.