Názory ke článku Je uživatel online? – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Názory ke článku Je uživatel online? – Programujte.comNázory ke článku Je uživatel online? – Programujte.com

 

Názory ke článku Je uživatel online?

benghi   NOVÝ
26. 1. 2008

Podle mýho je! Totiž, ukládat statusy vlastních zaměstnanců do vlastní databáze není až tak blbej nápad, neb to bude na VAŠEM serveru. Skvělý jsou stránky, který používají např. ikonku z ICQ a vy čekáte jak magoři než příslušnej server zapracuje...za to bych někoho zabil!

Ovšem, není jednodužší vyrobit někde na serveru adresář se statusovejma ikonkama a potom si při generování příslušný stránky v php zjistit, jakej status má zrovna tenhle uživatel a podle toho upravit příslušný IMG SRC= a pochopitelně i ALT= na místě, kde se vkládá do stránky jeho ikonka? Možná mi něco ušlo...

Druhák, ikdybych připustil tuhle metodu potom se mi v kodu hrubě nelíbí konstrukce
SELECT * FROM .... where ID=
nad čímž je ještě použitý mysql_fetch_array. Má to hned tři chyby:

1. nechápu proč nepoužije SELECT stav FROM... protože těch dat, co by lezlo z databázovýho serveru a následně by se zpracovávalo v php by bylo míň, ač pochopitelně nevím, jestli tam jiný data o kousek dál nepotřebuje...pak by to bylo výhodnější takhle, ale vzhledem k tomu, JAK je z toho čtený, pak je zřejmý, že nepotřebuje. fetch_array na to, abych pak z tý array vybral jednu jedinou hodnotu je imho zrůdnost.

2. má tragicky neošetřený stav, kdy pro příslušné ID nebude v tabulce záznam. PHP v takovým případě vybleje chybový hlášení, který docela dost napoví o struktuře systému. Jde to kupříkladu zpětně strojem použít na uhádnutí ID.

3. když bude vypisovat status u 50 zaměstnanců, pak udělá 50x mysql_query, což zbytečně zatěžuje server, což ostatně zbytečně dělá i tím prokrucováním fajlu s obrázkem přes skript.


Podle mýho by teda daleko jednodužší udělat něco jako:

SELECT jmeno,prijmeni,stav FROM ....

případně ještě seřadit, následně si zjistit přes mysql_num_rows kolik tam mám záznamů, přes for je všechny projít a zároveň z fetchnutejch dat vysypávat jméno a přijmení do tabulky s uživatelama, přičemž podle statusu bych následně zvolil jednu ze statusovejch ikonek, což bych řešil změnama IMG SRC tagů na příslušným místě.

Výhody mýho řešení:

1. Pokud máte 50 zaměstnanců, uděláte o 50 requestů do databáze míň.
2. Protože obrázky, tedy i ikony, browser může cachovat, pak přenesete v nejhorším případě všechny ikony, kdežto při řešení navrhovaným řešení se přenese velikost ikonky tolikrát, kolik máte vypisovanejch zaměstnanců. Při 50 zaměstnancích a 10kB na ikonu a pěti stavech, to znamená, že ušetříte 450kB (!!!) dat, který musí váš server odeslat a uživatel příjmout, což při připojení přes GPRS obnáší docela dost dlouhej časovej úsek na přenos.
3. V tagu IMG můžete ovlivnit ALT, za což vám poděkují všichni slepí spoluobčané, neb jejich systémy jsou text only.

Myslím si, že autor článku naprosto přesně popsal, jak se to dělat nemá. Pokud si autor myslí, že problematice rozumí a bude navrhovat systémy právě takhle, pak to do jistý míry vysvětluje množství systémů, který jsou mi pro svoji zkurwenost autorem předhazovány k opravě. OK, já z toho mám docela dobrej kšeft, ale na druhou stranu si myslím, že to není úplně dobře.

tonndovo   NOVÝ
27. 1. 2008

> V článku je schválně užit delší tvar $_GET["par"]. V případě serveru, kde budete mít povoleny register_globals stačí napsat jen $par a účinek bude stejný.

To jako myslíte vážně? V roce 2008 vysvětlovat důvody používání $_GET?
As of » PHP 4.2.0, this directive defaults to off.
Support for PHP 4 has been discontinued since 2007-12-31. Please consider upgrading to PHP 5.2. The release below is the last PHP 4 release.

toka   NOVÝ
27. 1. 2008

Dle meho nazoru tezce spatny clanek, viz intelignetni pripominka vyse a celkove dojem z clanku temer nulovy. Neprinasi zadne nove poznatky ani nic zajimaveho a jeste je popsan dost amatersky.

Jan Kodera   NOVÝ
27. 1. 2008

To tonndovo: to bych nevycital, jeste se daji najit hostingy kde register globals jsou on.

To benghi: nu mate pravdu. Jeste bych doplnil, ze mi neni jasne proc autor pouziva jednom jeden parametr. Kdyz je zcela jasne, ze parametry ma dva. Takze pouziti ?par1=neco&par2=neco2 je nasnade. Misto jeho pouziti explode.

DragonBehemont   NOVÝ
28. 1. 2008

Děkuji všem za jejich názor a za kritiku (ať už kladnou nebo zápornou). Současně uznávám, že článek není napsaný zrovna nejlépe - inu, nejsem profesionální novinář, navíc je to první článek, který jsem v tomto směru napsal. Pokusím se jej přepsat a zohlednit veškeré námitky, které jste zde napsali...

Akorát bych rád vysvětlil něco, co zde bylo předhazováno:

Ještě dnes je spousta hostingů, které mají různé nastavení register globals. Někteří mají on, někteří mají off. Některé hostingy ani nemají nejnovější verze PHP, ale spolíhají na starší a vyzkoušené.

To benghi: souhlasím s tím, že místo SELECT * FROM jsem mohl použít SELECT stav FROM. Nicméně nesouhlasím s užitím přímo na dané stránce, ale ponechal bych to zvlášťv souboru.
A pochybuji, že byste zrovna po mně opravoval nějaký web ;-)

DragonBehemont   NOVÝ
28. 1. 2008

benghi píše:

Myslím si, že autor článku naprosto přesně popsal, jak se to dělat nemá. Pokud si autor myslí, že problematice rozumí a bude navrhovat systémy právě takhle, pak to do jistý míry vysvětluje množství systémů, který jsou mi pro svoji zkurwenost autorem předhazovány k opravě. OK, já z toho mám docela dobrej kšeft, ale na druhou stranu si myslím, že to není úplně dobře.






A pár odpovědí...

Ne:

- takto nenavrhuji systémy

- nejsem nejchytřejší na světě a nemám patent na to, že vím všechno ;-)



Ano:

- zapomněl jsem ošetřit veškeré chyby, které mohou nastat, dokonce jsem zapomněl ošetřit injection

- úplně zbytečně čtu veškeré údaje z řádku v databázi místo toho, abych si vytáhl pouze stav

- MySql není můj obor, teprve se ho učím, můj obor je GD knihovna a práce se soubory

- článek není zrovna nejpovedenější

- článek jsem již opravil (snad se po úpravě bude více zamlouvat)

- kdyby v článku byly i po opravě některé věci, které jsem neopravil, opět se ozvěte.

benghi   NOVÝ
29. 1. 2008

To Jan Kodera: Tak o tom explode už raději nemluvím vůbec, ikdyž se přiznám, že jsem na to chvíli zíral, než jsem pochopil, co tím autor zamýšlel. Přiznám se, že dýl mi trvalo pochopit, proč předává dva parametry. OK, hraje si se stylama, jenomže to bych osobně přiložil k náložím buď do session, pokud se pro uživatele otevírá, nebo do nějaký cookie. Jasně, jde to přesypávat i mezi stránkama, ale pokud vyloženě nechci ukládat do cookies, pak nemají smysl styly, protože když uživatel vleze na stránky podruhý, tak je slušná pravděpodobnost, že zas skončí v default stylu no a pokud to už do cookie uložím, pak zas není důvod to za sebou tahati coby ocas, ovšem na druhou stranu připouštím, že může vypadat blbě, když uživatel se zakázanými cookies nemůže přepnout styl (což je ale velmi extrémní případ, že). Leč to je věc názoru.

Možná autorovi křivdím, ale mám dojem, že se PHP učí tím, že o něm píše. Jenže se patrně učí i programovat a na to skripty na generování stránek nejsou zrovna to nejlepší.

benghi   NOVÝ
29. 1. 2008

To tonndovo: Ale jo, najdou se talenti, ale je jich už hrozně málo, tedy pokud jde o webhosting. Pokud jde o nějaký firemní servery, pak se to naopak vidí dost často včetně starejch verzí PHP, neb to správcují podle metody ,,co funguje, do toho nesahej'', což, jak jsem po létech praxe zjistil, je jeden z nejlepších přístupů.

benghi   NOVÝ
29. 1. 2008

To DragonBehemont: To SELECT FROM * začne být nepříjemný v momentě, kdy ta tabulka má spousty sloupců, což bude v každým druhým systému, v tom prvním zas bude spousta tabulek navzájem spojovanejch indexama. Z mýho pohledu to je prašť jak uhoď, jenom pokud ten systém vznikal zesložiťováním něčeho jednoduchýho, tak bych byl spíš pro ty spousty tabulek, ale to je věc názoru.

To ,,ponechání ve zvlášť souboru'' má nějakej důvod? Já nevidím výhodu tohoto řešení, tedy krom toho, že můžete ikonky statusů generovat jiným webserverem, než na kterým se generuje vlastní stránka. Ano, skutečně si dovedu představit moment, kdy by tohle nastalo - vlastní ICQ server. To, co jsem tehdy provozoval já, běželo nad postgresem (už si moc nepamatuju, JAK se to jmenovalo), ovšem zas si dost dobře nedovedu představit, že bych na ICQ server instaloval ještě specielně PHP a apache jenom kvůli tomuto, když můžu databázovej server oslovit přímo z webserveru, ale i tak bych se tomu dost striktně bránil a to především kvůli tomu, že nemůžu měnit u obrázku ALT (já nejsem egypťan, takže obrázkový písmo mi nic neříká, tudíž ten ALT považuju obzvlášť v tomhle pádě za dost důležitej) a kvůli poměrně značnýmu zatížení serveru i přenosovejch tras.

Po kom jsem co opravoval...no já si evidenci nevedu a navíc se mnohdy nedozvím, kdo to spáchal. Obvykle to dostávám ve stavu ,,fungovalo to půl roku a pak se to záhadně podělalo'', nebo ,,dokud jsme byli malá firma, tak to fungovalo normálně, ale teď to přetěžuje server'' či ,,potřebujem dodělat jednoduchou věc, ale autor to neumí/odmítá/je nesehnatelnej'', přičemž všechno je to zakončený konstatováním ,,nechceme přijít o data, co v tom systému máme''. Taky poměrně častý bývají průšvihy typu ,,nastavili nám register globals off'' nebo ,,zavedli PHP5 a nám to přestalo fungovat''.

DragonBehemont   NOVÝ
29. 1. 2008

To benghi: Proč používám explode? Protože to tak prostě dělám. Stejně jako někteří neustále používaj některou funkci, i když by to mohli udělat jinak, tak já prostě používám na předávání jeden parametr, kde jsou hodnoty odděleny pipem - samozřejmě jsou věci, kde to použít nejde. A ohledně důvodu, proč používám dva parametry? Právě pro případ vypnutých cookies.

A ohledně křivdy, do jisté míry ano, do jisté míry ne. Nemohu říct, že znám PHP dokonale, ale zase nemůžu říct, že jsem úplný začátečník. A stejně jako každý člověk se neustále učím. Bohužel, MySql není zrovna mou silnou stránkou, ale snažím se poučit ze svých chyb a příště je již nedělat. Možná by se snad hodila otázka, jestli je vůbec někdo, kdo zná dokonale PHP... aniž by se spletl, aniž by udělal chybu... nikdo. A ohledně další poznámky, ano, snažím se pomalu učit i C++.

DragonBehemont   NOVÝ
29. 1. 2008

To benghi: Jj, to vím, že SELECT * FROM může být hodně zákeřný. Ale mě by spíše zajímala jinčí věc, posledně jste mi vytkl použití funkce mysql_fetch_array. Vytkl jste mi ji díky špatně užitému SELECT-u nebo celkově?

Ano, odhadl jste to přesně... to ponechání ve zvlášť souboru má právě tento důvod - aby bylo možno tuto ikonku umístit případně i na jiný web. Ona icq ikona a ikona pro chat lide.cz byla pouze pro názornost. Jednalo by se především o server s vlastním komunikátorem... například webovky, kde by bylo zasílání zpráv druhému uživateli, atd. Uvlivněni ALT sice není v tom směru, že by říkalo přesně, zda je uživatel přihlášen, nebo ne, ale dá se tam napsat např.: "Stav uživatele xxxxx yyyyyy".

Jinak Vás mohu ujistit, že po mně jste žádné stránky neopravoval, protože většinou na všechny chyby a nedostatky přijdu sám během testovacího provozu. A i kdyby se chyby dostavily později, tak o svou práci se vždy postarám... nejsem člověk, který by stránky předal a už se o ně nezajímal.

DragonBehemont   NOVÝ
29. 1. 2008

To benghi: Ještě bych rád věděl jednu věc. Napsal jste, že se zdá, jak kdybych se to učil během toho, co píši články. Vám se nikdy nestalo, že jste si myslel, že se funkce chová tak, či onak, ale nakonec se za jiných podmínek ukázalo, že se chová úplně jinak? Nebo třeba, že jste jednoduše domníval, že je něco jinak, než to opravdu bylo?

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



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