Menu
RSS
Kategorie
Nejnovější články
Nejnovější komentáře
- Dnes ve stylu let devadesátých
- Nebylo mi souzeno
- 2012
- STOP všemu, hlavně těm pitomcům
- STOP všemu, hlavně těm pitomcům
| Last.fm - The Zero | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | E-Type (2930) |
| 2 | Groove Coverage (2397) |
| 3 | Sylver (1561) |
| 4 | Ace of Base (1435) |
| 5 | MAYA (1206) |
| 6 | Cascada (1095) |
| 7 | Solid Base (1061) |
| 8 | Lewron Orchestra (907) |
| 9 | Verona (880) |
| Last.fm - Borek | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | Coldplay (1181) |
| 2 | Pink Floyd (627) |
| 3 | Jaromír Nohavica (609) |
| 4 | Louis Armstrong (405) |
| 5 | Karel Kryl (327) |
| 6 | Brian Tyler (321) |
| 7 | Vladimír Mišík (254) |
| 8 | Bobby McFerrin (215) |
| 9 | Anat Cohen (212) |

Deníček programátora (3)
Protože se Lord AgEnT minule zděsil a žádal mě, abych mluvil zase nějakým normálním jazykem, tak vás dneska žádné šílené ukázky toho, čeho byste se měli vyvarovat, nečekají.
Dnešním tématem jsou regulární výrazy a výhýbání se jim.
Kdysi dávno, může to být už tak rok, jsem na Cold War zavedl mazání jednotlivých odpovědí do zpráv na fóru. Abych to trochu přiblížil, je to něco jako odpovědi "adminů" na blbboardu (toho modrýho), jen jich může být (teoreticky) neomezeně v každém příspěvku. (náhled)
Ale protože by byl nesmysl, aby se odkaz na smazání té každé odpovědi zobrazoval všem (já to tam mám všude - to [S]), když ji ani mazat nemohou (odpověď do příspěvku, stejně jako samotné příspěvky, může jen autor nebo příslušný privilegivaný člověk), bylo potřeba vymyslet nějaký systém zobrazování těch odkazů a oddělování jednotlivých odpovědí.
Nakonec jsem to vyřešil tak, že každá odpověď se obalila speciálním tagem <reply> a při výpisu se pak tento tag nahrazoval na odkaz na smazání.
Protože to ale je dost komplexní záležitost, nepřišel jsem na žádné jiné řešení, než sada str* funkcí uvnitř cyklu (while). Fungovalo to perfektně, až na to, že při velkém počtu odpovědí do jednoho příspěvku už to solidně zpomalovalo skript.
Když jsem si konečně řekl, že už bylo dost a je načase s tím něco dělat, objevil jsem modifikátor U pro preg_* funkce.
Normálně je hledání "nenasycené" a když hledáte něco ve stylu
'/<reply>(.+)<\/reply>/s'
v textu
<reply>text</reply><reply>text2</reply>
tak vám to vrátí kompletní vnitřek, tj.
text</reply><reply>text2
S modifikátorem U (tj. konec bude vypadat /sU) se najdou dvě odpovídající části - text a text2. Tedy přesně to, co chceme.
No a díky tomu se doba parsování odpovědí do příspěvků zkrátila na mém PC z 0,25s na 0,01s. Když vezmete v úvahu, že celková doba běhu skriptu byla původně 0,75s, dá se to nazvat slušnou optimalizací.
Komentáře
Nikdo ještě nekomentoval. Buď máte fakt rychlou RSS čtečku, nebo jste právě přečetli něco, co nikomu nestojí ani za trochu snahy.