Latte – source maps (stupid Flanders a predmet kratsi nez 25 znaku)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
juzna.cz
Člen | 248
+
0
-

Intro

Google Chrome ma paradni featuru zvanou Source maps, pomoci ktere dokaze mapovat zkompilovany/zkomprimovany kod zpet na puvodni. Diky tomu muzete napr.:

  1. spoustet minifikovany JavaScript ale vyjimky videt jakoby byly v originalnim zdrojaku;
  2. spoustet JS vznikly kompilaci CofeeScriptu, a ladit ho jako puvodni Coffee;
  3. to same pro CSS / SASS atd… (jeste neimplementovano).

Motivation

Bezne pouzivame sablony napsane v Latte, ale jakmile je tam nejaka chybka (napr. pouziti nedefinovane promenne, spatne argumenty pro funkci,…), Ladenka nam ukaze chybu ve zkompilovanem a hnusne zpatlanem PHP kodu. Myslim ze uz chapes, jak to spolu souvisi, ze? Dal snad neni co vysvetlovat.

Example

Ted jako v kazdem spravnem teleshoppingu nasleduji dve typicke ukazky:

Implementation

Brzo bude pull, musim to trosku porovnat a udelat testy.

Nyni muzete tleskat. Dekuji. Mate-li nekdo pripominky nebo dotazy, hlaste se prosim.

Editoval juzna.cz (30. 3. 2012 23:50)

juzna.cz
Člen | 248
+
0
-

Tak, uhladil jsem implementaci, ale jeste mi tam pada jeden test (protoze v jednom pripade vygeneruje konec radku navic…).
Pri beznem testovani zda se vsak funguje vsecko v poradku

Editoval juzna.cz (31. 3. 2012 0:47)

Lopo
Člen | 277
+
0
-

akuratne bych to generovanie mapy obmedzil defaultne na zapnuty debug mod a nie defaultne zapinal … v production mode je podla mna jej generovanie zbytocne (v 99.9%)

David Ďurika
Člen | 328
+
0
-

tak teraz sa latte moze zkompilovat aj do minifikovanej verzie…

Editoval achtan (31. 3. 2012 8:30)

hrach
Člen | 1819
+
0
-

Lopo: naopak, k temto chybam dochazi vetsinou v production modu, kdy mas obrovskou sadu dat, ktere jsi nemohl poradne otestovat.

Moc se mi to libi! Hodne dobrej napad zpusobu implementace. :D

Tomáš Votruba
Moderator | 1110
+
0
-

Moc pěkné :)

ic
Člen | 430
+
0
-

zajímavá věcička… to by mě nenapadlo

juzna.cz
Člen | 248
+
0
-

Momentalni implementace ale neni vubec pekna, chtelo by to zrefaktorovat, jen stale premyslim jak. Nelibi se mi tam krizova provazanost Debuggeru a Latte, radeji bych to vyclenil nekam „ven“.

Stejna source-mapa by se pak dala pouzit i u Neonu, ale to zase @dg rikal ze uz nejak chysta sam.

Matúš Matula
Člen | 248
+
0
-

Super ficura, tleskam! :)

MartyIX
Člen | 217
+
0
-

Kudos!

juzna.cz
Člen | 248
+
0
-

Vcera jsme toto tema nakousli na #posobota, tak se k tomu vracim a chtel bych to dotahnout.

Zjistil jsem, ze zatim nejvetsi problem mi dela Nette\Templating\Helpers::optimizePhp(), ktera odmazava nepotrebne prazdne radky ve vygenerovanem PHP kodu. IMO bychom tuto mikro-optimalizaci mohli odstranit, stejne je jeji vyznam prakticky nulovy. Diky tomu by se source-mapy daly udelat rozumne.
(Akorat ze to aktualne rozbije cca 20 testu :D)

Nejake namitky? (prosim, namitejte pokud vas cokoliv napadne)

Editoval juzna.cz (29. 4. 2012 12:12)

hrach
Člen | 1819
+
0
-

Možná bych odstranil jen ty modifikace, ktere meni pocet radku. Odstraneni konstrukci ?><?php by nemelo vadit, ne? :) Jinak jsem urcite pro.

juzna.cz
Člen | 248
+
0
-

Spatne sem se vyjadril – veskere optimalizace, ktere provadi optimizePhp() jsou bezproblemove, az na tu jednu – odstranovani nadbytecnych koncu radku.
Prakticky potrebuju, aby se cisla radku behem optimalizace nezmenila (jinak by tato optimalizace musela delat dalsi source mapu, coz je zbytecna komplikace).

Jeste dotaz na vsechny: pouzivate nekdo jine filtry, nez je Latte? Muzu poprosit o nejake info/link.

jtousek
Člen | 951
+
0
-

Můj případ to sice není, ale možná se najdou tací kteří používají Haml

Tomáš Votruba
Moderator | 1110
+
0
-

jtousek napsal(a):

Můj případ to sice není, ale možná se najdou tací kteří používají Haml

Najdou :). Možná tam najdeš i kousek inspirace, jak ony konce řešit.

juzna.cz
Člen | 248
+
0
-

Zrefaktoroval jsem to a napsal jsem nejake testy. Par testu tam mam rozepsanych, protoze si nejsem moc jistej, jak takovyto veci pekne otestovat – kdyby nekoho neco napadlo a napsal by to, budu rad.

Zjistil jsem, ze optimizePhp() mi to porad rozbiji, proto jsem ho docasne uplne vyhodil ;) Krom toho se mi to ted zda, ze uz to funguje pekne.

Work in progress, stay tuned

juzna.cz
Člen | 248
+
0
-

Kdyby se nekomu povedlo „opravit“ to optimizePhp tak, aby zachovavalo cisla radku, tak budu prevelice rad. Sam sem se v tom uz tak zamotal, ze se z toho asi nevymotam. Komunito, pomuzes?

Hint: zkuste si to zakomentovat, nechat si zkompilovat par sablon a vykopirovat si cache bokem. Pote optimizePhp zase zapnout a porovnavat vysledky

Jan Tvrdík
Nette guru | 2573
+
0
-

juzna.cz wrote: pouzivate nekdo jine filtry, nez je Latte? Muzu poprosit o nejake info/link.

https://github.com/…eFilters.php#L36

juzna.cz
Člen | 248
+
0
-

Problemy s optimizePhp vyreseny (viz PR).