Serwis Trojmiasto.pl to regionalny portal informacyjny, z własną redakcją która nie powiela niusów z Wyborczej. I to sobie cenię. Ale wymyślili coś tragicznego IMHO.
Niestety ktoś chciał być zabawny, albo ekipa serwisu bardzo poszukuje pracowników i wymyślili powyższą formę reklamy prezentując na stronie głównej poniższy exception:
PDOException: SQLSTATE[28000] [1045] Access denied for user 'phpdeveloper' (using password: 'needed.now') in /html/source/4/details.inc.php on line 75
1. 0.0004 130048 __construct ( ) ../bootstrap.inc.php:27
Ekipa Trojmiasto.pl uważa, że plucie czymś takim czytelnikom to dobry pomysł. Jasne. Nie jest to dobre rozwiązanie, ani dla Czytelników ani dla potencjalnych kandydatów.
Dlaczego to co widać powyżej jest kiepskie z punktu widzenia programisty PHP?
- Włączony debugger na produkcji to jedno z najgorszych rozwiązań jakie można zastosować. Dochodzimy do wniosku, że testują wszystko jak wlezie na produkcji i nie znają obecnych rozwiązań do monitorowania produkcji.
- Kod serwisu pachnie kodem proceduralnym sprzed 10 lat gdy nie oddzielało się logiki biznesowej od kwestii widoku. Dla człowieka na polskich studiach może jest to okej, albo jest sprzeczne z obecnymi trendami w PHP.
- Na podobny archaizm wskazują nazwy plików .inc.php, gdzie żyjemy w czasach wzorców projektowych, SOLID, etc.
Że nie jest to faktycznie rzucony błąd przez PHP dochodzimy do wniosku, dopiero gdy pomyślimy że jesteśmy Frontend Developerem i zajrzymy do kodu HTML (Backend Developera to nie interesuje):
w postaci tekstowej prezentuje się następująco:
<!-- phpdeveloper? join us! mail('warningadv@trojmiasto.pl', 'phpdeveloper', $cv.$short_desc); --></pre>
<table id="warningadv" dir="ltr" border="1" cellspacing="0">
<tbody>
<tr>
<th colspan="6" align="left" bgcolor="#dddddd"><span style="background-color: #cc0000; color: #fce94f; font-size: large;">( ! )</span> PDOException: SQLSTATE[28000] [1045] Access denied for user 'phpdeveloper' (using password: 'needed.now') in /html/source/4/details.inc.php on line <i>75</i></th>
</tr>
<tr>
<td align="center" bgcolor="#dddddd">1</td>
<td align="center" bgcolor="#eeeeec">0.0004</td>
<td align="right" bgcolor="#eeeeec">130048</td>
<td bgcolor="#eeeeec">__construct ( )</td>
<td title="common/bootstrap.inc.php" bgcolor="#eeeeec">../bootstrap.inc.php<b>:</b>27</td>
<td align="right" bgcolor="#eeeeec"><button title="zamknij" type="button">x</button></td>
</tr>
</tbody>
</table>
<pre>
<script type="text/javascript">// <![CDATA[
function warningadv() {
document.cookie = 'warningadv=1000;path=/;domain=trojmiasto.pl;expires=Sun, 1 Mar 2015 12:00:00 UTC;';
document.getElementById('warningadv').style.display = 'none';
document.getElementById('warningadv').hidden = true;
}
// ]]></script>
Technologie frontendowe są dla mnie nieco odległe, ale ten kod również bardziej odstrasza niż przyciąga. Obecnie tak się nie programuje, ani na frontendzie, ani backendzie. W dzisiejszych aplikacjach wszystko jest oddzielone od siebie, zbudowane z klocków…
Pozostaje podziękować, że człowiek patrząc na ten kod i debugger mógł się poczuć jak 10 lat temu