Leser: 14
![]() |
|< 1 2 3 4 5 >| | ![]() |
44 Einträge, 5 Seiten |
Auctioneer+2008-10-07 01:58:23--Zum Beispiel??Der Vorteil von HTML Templates liegt vielleicht darin, dass diese etwas einfacher mit HTML Editoren nachbearbeitet werden können. Allerdings kann es passieren, dass, je nach Template System, interne "Seiten-Schnittstellen-Kommando-Wörter" nach einer solchen Bearbeitung plötzlich weg sind, und dann funzt die Template nicht mehr.
QuoteInhalte und Logik sollten immer getrennt sein. Das erleichtert die Wartung des Skripts und des Layouts enorm.HTML Templates machen vielleicht Sinn, wenn grosse HTML Inhalte eingelesen werden müssen, denn der Script selber nimmt sonst riesige Ausmasse an, was die Uebersichtlichkeit beim Editieren erschweren kann. Allerdings kann man den Script in einzelne Teile zerlegen, um dieses Problem zu lösen.
QuoteDa normalerweise in einem Script sehr viele sehr kurze HTML Sequenzen vorhanden sind, die vielleicht nur eine oder zwei HTML Zeilen beinhalten, macht es fast keinen Sinn, derartige Dinge auszulagern, denn sonst verliert man ohne HTML Teile letztlich den Ueberblick im Script selber. Ich habe mir soeben ein derartiges "Werk" zur Brust genommen und gestaunt, wie schlecht man es machen kann, nur weil man um jeden Preis "templaten" wollte.
QuoteIch nehme an, Du meinst die Interpolation von Variablen?!? Da gibt es keinen Unterschied zwischen "" und qq~~. Wenn Du Interpolation vermeiden willst, dann solltest Du '' bzw. q~~ verwenden.Die Geschwindigkeit von HTML Teilen innerhalb Scripts kann massiv erhöht werden, wenn der Server nicht jeden Buchstaben eines HTML Teils als Perl Script Teil abrufen (und auf scripttechnische Korrektheit prüfen) muss, sondern den HTML Teil nur als reinen Text (ohne Fehlerkontrolle) ablesen kann. Das erreicht man, wenn man HTML Sequenzen anstatt:
QuoteHäh??Die viel eingesetzte, erfahrungsgemäss jedoch schlechteste Variante ist:
print =<<"EOF"
...
...
EOF
weil hier die Perl Backslashes \ auch innerhalb HTML beibehalten werden müssen, sonst gibt es haufenweise Errors
QuoteDie Backslashes sind unnötig:, ausgenommen, man verzichtet auf Gänsezeichen, was aber eigentlich ein Murks ist. Ausserdem kann man ohne Gänsezeichen keine mehrwörtigen (z.B.) Bildinformationen -alt=Muster text- Informationen eintragen weil so nur das erste Wort nach -alt=Muster- ausgelesen wird, abgesehen vom möglichen Folge-Error, der das zweite (offene) Wort im weiteren Programmablauf hinterlässt.
print =<<"EOF";
<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">
EOF
QuoteBitte Beispiel. Das wäre ein Bug in Perl und dieses Verhalten ist mir noch nie untergekommen (was nicht heißt, dass es den Bug nicht geben kann).und weil der Abstand zwischen dem Start/Schluss - EOF manchmal eine Leerlinie betragen muss, damit es vom Server "verstanden" wird:
print =<<"EOF";
<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">
EOF
Auctioneer+2008-10-07 01:58:23--Da normalerweise in einem Script sehr viele sehr kurze HTML Sequenzen vorhanden sind, die vielleicht nur eine oder zwei HTML Zeilen beinhalten, macht es fast keinen Sinn, derartige Dinge auszulagern, denn sonst verliert man ohne HTML Teile letztlich den Ueberblick im Script selber.
QuoteIch habe mir soeben ein derartiges "Werk" zur Brust genommen und gestaunt, wie schlecht man es machen kann, nur weil man um jeden Preis "templaten" wollte.
QuoteDie Geschwindigkeit von HTML Teilen innerhalb Scripts kann massiv erhöht werden, wenn der Server nicht jeden Buchstaben eines HTML Teils als Perl Script Teil abrufen (und auf scripttechnische Korrektheit prüfen) muss, sondern den HTML Teil nur als reinen Text (ohne Fehlerkontrolle) ablesen kann. Das erreicht man, wenn man HTML Sequenzen anstatt:
print "<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">";
so:
print qq|<img src="musterbild.jpg" alt="Muster text" border="0">|;
QuoteEs gibt noch andere Varianten wie:
print <<EO_HTML;
<img src="musterbild.jpg" alt="Muster text" border="0">
EO_HTML
[...]
Die viel eingesetzte, erfahrungsgemäss jedoch schlechteste Variante ist:
print =<<"EOF"
...
...
EOF
weil hier die Perl Backslashes \ auch innerhalb HTML beibehalten werden müssen, sonst gibt es haufenweise Errors
Quote
Auctioneer+2008-10-07 01:58:23--Der Vorteil von HTML Templates liegt vielleicht darin, dass diese etwas einfacher mit HTML Editoren nachbearbeitet werden können. Allerdings kann es passieren, dass, je nach Template System, interne "Seiten-Schnittstellen-Kommando-Wörter" nach einer solchen Bearbeitung plötzlich weg sind, und dann funzt die Template nicht mehr.
HTML Templates machen vielleicht Sinn, wenn grosse HTML Inhalte eingelesen werden müssen, denn der Script selber nimmt sonst riesige Ausmasse an, was die Uebersichtlichkeit beim Editieren erschweren kann. Allerdings kann man den Script in einzelne Teile zerlegen, um dieses Problem zu lösen.
Da normalerweise in einem Script sehr viele sehr kurze HTML Sequenzen vorhanden sind, die vielleicht nur eine oder zwei HTML Zeilen beinhalten, macht es fast keinen Sinn, derartige Dinge auszulagern, denn sonst verliert man ohne HTML Teile letztlich den Ueberblick im Script selber. Ich habe mir soeben ein derartiges "Werk" zur Brust genommen und gestaunt, wie schlecht man es machen kann, nur weil man um jeden Preis "templaten" wollte.
1
2
3
<ins class="ssperl" id="tmpl_pagename"><h1 class="pagename">%%.pagename%%: <span>%%.pagetitel%%</span></h1>
</ins>
<script type="text/ssperl" >MetaFillTemplate( $tmpl_pagename, undef);</script>
1
2
3
4
5
6
<!-- my $message = "$form{'ALIAS2'}, your Rating of $form{'ALIAS'} has been saved.\n";
print &load_template ('feedform3.html', {
MESSAGE => $message,
%globals
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- HTML TEMPLATE version 1.0 -->
<HTML>
<HEAD>
<TITLE></TITLE>
<META name="description" content="<%META_DESC%>">
<META name="keywords" content="<%META_KEYWORDS%>">
</HEAD>
<%HEADER%>
<%NAVBAR%>
<center>
<H2>Add to a User's Rating</H2>
<%MESSAGE%>
</center>
<%FOOTER%>
</BODY>
</HTML>
Auctioneer+2008-10-09 03:15:46--Wenn die kostenlose deutschsprachige Beta-Version meiner LGPL-EA-Variante so gegen Weihnachten erhältlich sein wird, bin ich für Kritik zugänglich, soweit es meine eigenen Arbeiten an der Software betrifft. Mutmassungen darüber zu einem früheren Zeitpunkt machen keinen Sinn und den Script auch nicht besser.
Auctioneer+2008-10-09 03:15:46--Wichtig erachte ich auch meine Aussagen zu Templates (für Auktionsscripts).
Was ist denn einfacher, als in einem Script schön sauber geschriebenen HTML Source Code zu erkennen, was natürlich die absolute Voraussetzung für einen Perler ist. Es geht ja nur so, sonst habe ich als "Amateur" überhaupt keine Ahnung, wo ich mich befinde und was was macht. Und ganz nebenbei kann ich lernen, wie ein Script überhaupt aufgebaut ist und was, wo, zumindest ganz rudimentär, zu welchem Resultat führt.
Auctioneer+2008-10-09 03:15:46--Sorry, da habe ich wohl Dinge erzählt, die für einige (Fach)Leute etwas zu denken geben. Hat sicher etwas Gutes. Bringt Leben ins Forum.
QuoteMeine Ausführungen basieren auf eigenen und auf Erfahrungen vieler anderer, die über den Zeitraum von mehr als 8 Jahren in unzähligen Versuchen teilweise kompetenter Leute gesammelt wurden.
QuoteFakt ist, dass für, und ich spreche nur davon, bei unseren EA Auktionsscripts die Dinge halt so sind, wie ich diese teilweise vorgehend beschrieben habe. Jeder kann das einfach und selber nachvollziehen, indem man es einmal ausprobiert. Kostet nur einen Riesenhaufen Zeit und Denkarbeit. Ich kann nicht mehr dazu sagen.
QuoteIch hoffe, niemandem mit dieser Aussage weh zu tun.
Quote(auch wenn Fachleute wie Randall S. ob einer solcher Aussage wortlos den Hut nehmen und gehen würden)
QuoteAber die Meisten von uns waren und sind keine Perl-Pro's, sondern Leute, die vielleicht versuchen, aus "Something Very Basic" etwas zu lernen und mit viel Aufwand zu versuchen, es zu verbessern. Einen anderen Anspruch habe auch ich nie gestellt.
Quote(Meine Art des Schreibens erscheint vielleicht einigen manchmal "etwas kompetent"...)
QuoteWer Lust hat, einen Teil meiner anderen Aussagen nachzuvollziehen, soll sich doch einfach einen EA Basisscript downloaden
QuoteIch höre schon, Es ginge auch anders! Aber so viel anders wäre "anders" mit Sicherheit auch nicht, auch wenn einige hier natürlich auch anderer Meinung sein dürfen. Für mich: Simply a waist of time... und für "new Programmers" auf Zeit hinaus völlig intransparent.
Auctioneer+2008-10-09 03:15:46--Da gibt es sogar Timing-Unterschiede, je nachdem ob "EOF" EO_HTML qq| qq~" verwendet wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Carp; use Benchmark; timethese($ARGV[0] || 100, { quotes => sub { for (1..100) { my $x = "<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">"; } }, qq1 => sub { for (1..100) { my $x = qq|<img src="musterbild.jpg" alt="Muster text" border="0">|; } }, qq2 => sub { for (1..100) { my $x = qq~<img src="musterbild.jpg" alt="Muster text" border="0">~; } } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
qq2: 3 wallclock secs ( 2.54 usr + 0.00 sys = 2.54 CPU) @ 39370.08/s (n=100000)
quotes: 2 wallclock secs ( 2.54 usr + 0.00 sys = 2.54 CPU) @ 39370.08/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.62 usr + 0.00 sys = 2.62 CPU) @ 38167.94/s (n=100000)
qq2: 3 wallclock secs ( 2.63 usr + 0.00 sys = 2.63 CPU) @ 38022.81/s (n=100000)
quotes: 2 wallclock secs ( 2.52 usr + 0.00 sys = 2.52 CPU) @ 39682.54/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.61 usr + 0.00 sys = 2.61 CPU) @ 38314.18/s (n=100000)
qq2: 2 wallclock secs ( 2.61 usr + 0.00 sys = 2.61 CPU) @ 38314.18/s (n=100000)
quotes: 1 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.57 usr + 0.00 sys = 2.57 CPU) @ 38910.51/s (n=100000)
qq2: 2 wallclock secs ( 2.52 usr + 0.00 sys = 2.52 CPU) @ 39682.54/s (n=100000)
quotes: 3 wallclock secs ( 2.55 usr + 0.00 sys = 2.55 CPU) @ 39215.69/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
qq2: 3 wallclock secs ( 2.51 usr + 0.00 sys = 2.51 CPU) @ 39840.64/s (n=100000)
quotes: 2 wallclock secs ( 2.53 usr + 0.00 sys = 2.53 CPU) @ 39525.69/s (n=100000)
pq+2008-10-07 10:29:04--in anbetracht deiner empfehlungen und zweifelhaften aussagen würde ich doch gerne mal den code sehen...
![]() |
|< 1 2 3 4 5 >| | ![]() |
44 Einträge, 5 Seiten |