Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt konfiguracji ogólnej pisany przez profesionalistów...
Forum PHP.pl > Inne > Hydepark
Stron: 1, 2
Adi32
Sam nie jestem profesjonalistą ale ten kod to chyba kpina, pisany w jednej linij...
Może ja czegoś nie wiem, co Wy o tym myślicie?

  1. <?public function __construct() {
  2. global $db;
  3.  
  4. $this->name = 'konfiguracja';
  5. $this->title = 'Konfiguracja serwisu';
  6.  
  7. $db->query("SELECT tresc FROM konfiguracja WHERE nazwa='blokada'");
  8. $res = $db->getNextRow();
  9.  
  10. if ($res['tresc'] == 'tak') {
  11. echo '';
  12. $this->checked = 'checked';
  13. } else {
  14. echo '';
  15. $this->checked = '';
  16. }
  17.  
  18. switch ($_GET['do']) {
  19. default:
  20. $this->show();
  21. break;
  22. }
  23. }
  24.  
  25. public function show() {
  26. global $db;
  27.  
  28. $db->query("SELECT * FROM " . $this->name . " WHERE id_jezyk=%d", $_SESSION['id_jezyk']);
  29. $r = $db->res();
  30.  
  31. for ($i = 0; $i < count($r); $i++) {
  32. if ($r[$i]['id_fraza'] == 1)
  33. $keyw = $r[$i]['tresc'];
  34. if ($r[$i]['id_fraza'] == 2)
  35. $opis = $r[$i]['tresc'];
  36. if ($r[$i]['id_fraza'] == 3)
  37. $tytul = $r[$i]['tresc'];
  38. if ($r[$i]['id_fraza'] == 4)
  39. $email = $r[$i]['tresc'];
  40. if ($r[$i]['id_fraza'] == 5)
  41. $szer = $r[$i]['tresc'];
  42. if ($r[$i]['id_fraza'] == 6)
  43. $wys = $r[$i]['tresc'];
  44. if ($r[$i]['id_fraza'] == 7)
  45. $s1 = $r[$i]['tresc'];
  46. if ($r[$i]['id_fraza'] == 8)
  47. $s2 = $r[$i]['tresc'];
  48. if ($r[$i]['id_fraza'] == 9)
  49. $konto = $r[$i]['tresc'];
  50.  
  51. if ($r[$i]['id_fraza'] == 10)
  52. $licznik = $r[$i]['tresc'];
  53.  
  54. if ($r[$i]['id_fraza'] == 11)
  55. $updateczas = $r[$i]['tresc'];
  56.  
  57. if ($r[$i]['id_fraza'] == 12)
  58. $updateczestosc = $r[$i]['tresc'];
  59. }
  60.  
  61. if (isset($_POST['save'])) { //zapisz do bazy
  62.  
  63. if ($r) {
  64. $db->query("DELETE FROM " . $this->name . " WHERE id_jezyk=%d", $_SESSION['id_jezyk']);
  65. }
  66.  
  67. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 1, $_SESSION['id_jezyk'], $_POST['keyw']);
  68. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 2, $_SESSION['id_jezyk'], $_POST['opis']);
  69. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 3, $_SESSION['id_jezyk'], $_POST['tytul']);
  70. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 4, $_SESSION['id_jezyk'], $_POST['email']);
  71. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 5, $_SESSION['id_jezyk'], $_POST['szer']);
  72. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 6, $_SESSION['id_jezyk'], $_POST['wys']);
  73. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 7, $_SESSION['id_jezyk'], $_POST['szkontakt']);
  74. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 8, $_SESSION['id_jezyk'], $_POST['s2']);
  75. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 9, $_SESSION['id_jezyk'], $_POST['konto']);
  76. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 10, $_SESSION['id_jezyk'], $_POST['licznik']);
  77. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 11, $_SESSION['id_jezyk'], $_POST['updateczas']);
  78. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 12, $_SESSION['id_jezyk'], $_POST['updateczestosc']);
  79.  
  80. if ($_POST['blokada'] == 'tak') {
  81. $db->query("UPDATE konfiguracja SET tresc='tak' WHERE nazwa='blokada'");
  82. } else {
  83. $db->query("UPDATE konfiguracja SET tresc='nie' WHERE nazwa='blokada'");
  84. }
  85.  
  86.  
  87. //pobierz meta
  88. $db->query("SELECT * FROM konfiguracja WHERE id_jezyk=%d", $_SESSION['id_jezyk']);
  89. $mres = $db->res();
  90. if ($mres)
  91. foreach ($mres as $d => $b)
  92. $_SESSION['meta'][$b['id_fraza']] = $b['tresc'];
  93.  
  94. header("location:admin.php?module=" . $this->name . "&msg=Zmiany zapisane");
  95. }
  96. else { //pokaz
  97. ?>
  98. <h1>Konfiguracja serwisu</h1>
  99. <a href="admin.php?module=pomoc&do=<? echo $this->name; ?>">Pomoc</a>
  100. <form action="" method="post">
  101. <table cellpadding="0" cellspacing="0" style="width:90%">
  102. <tr>
  103. <td style="width:200px">Słowa kluczowe: </td>
  104. <td><input type="text" class="pole" size="60" name="keyw" value="<? echo $keyw; ?>" /></td>
  105. </tr>
  106. <tr>
  107. <td >Opis strony: </td>
  108. <td><input type="text" class="pole" size="60" name="opis" value="<? echo $opis; ?>" /></td>
  109. </tr>
  110. <tr>
  111. <td >Tytuł strony: </td>
  112. <td><input type="text" class="pole" size="60" name="tytul" value="<? echo $tytul; ?>" /></td>
  113. </tr>
  114. <tr>
  115. <td >E-mail kontaktowy: </td>
  116. <td><input type="text" class="pole" size="60" name="email" value="<? echo $email; ?>" /></td>
  117. </tr>
  118. <tr>
  119. <td >Licznik: </td>
  120. <td><input type="text" class="pole" size="60" name="licznik" value="<? echo $licznik; ?>" /></td>
  121. </tr>
  122. <tr>
  123. <td >Dane do wpłat: (bank, numer, dane odbiorcy) </td>
  124. <td><textarea style="width: 379px; height: 69px;" name="konto"><? echo $konto; ?></textarea></td>
  125. </tr>
  126. <tr>
  127. <td >Szybki kontakt: </td>
  128. <td><textarea name="szkontakt" /><? echo $s1; ?></textarea></td>
  129. </tr>
  130. <tr>
  131. <td >Update produktów - ostatni: </td>
  132. <td><input type="text" class="pole" size="60" name="updateczas" value="<? echo $updateczas; ?>" /></td>
  133. </tr>
  134. <tr>
  135. <td >Update produktów - częstość (min): </td>
  136. <td><input type="text" class="pole" size="60" name="updateczestosc" value="<? echo $updateczestosc; ?>" /></td>
  137. </tr>
  138.  
  139. </table>
  140. <input type="submit" class="go" name="save" value="Zapisz" />
  141. <input type="button" class="go" name="cancel" value="Anuluj" onclick="window.location='admin.php'" />
  142. </form>
Sephirus
Ło ja Cię kręcę smile.gif ale po kolei...

  1. global $db; // hmm nie słyszeli o przekazywaniu argumentów...


  1. $db->query("SELECT tresc FROM konfiguracja WHERE nazwa='blokada'"); // wydajność, wydajność i jeszcze raz wydajność biggrin.gif



  1. if ($res['tresc'] == 'tak') {
  2. echo ''; // To echo jest tutaj po to by?questionmark.gif
  3. $this->checked = 'checked';
  4. } else {
  5. echo ''; // To echo jest tutaj po to by?questionmark.gif
  6. $this->checked = '';
  7. }


  1.  
  2. switch ($_GET['do']) { // rozumiem że to jest dodane na zaś?
  3. default:
  4. $this->show();
  5. break;
  6. }
  7. }


  1. for ($i = 0; $i < count($r); $i++) { // a już myślałem że wiedzą co to switch(...)...
  2. if ($r[$i]['id_fraza'] == 1)
  3. $keyw = $r[$i]['tresc'];
  4. if ($r[$i]['id_fraza'] == 2)
  5. $opis = $r[$i]['tresc'];
  6. if ($r[$i]['id_fraza'] == 3)
  7. $tytul = $r[$i]['tresc'];
  8. if ($r[$i]['id_fraza'] == 4)
  9. $email = $r[$i]['tresc'];
  10. if ($r[$i]['id_fraza'] == 5)
  11. $szer = $r[$i]['tresc'];
  12. if ($r[$i]['id_fraza'] == 6)
  13. $wys = $r[$i]['tresc'];
  14. if ($r[$i]['id_fraza'] == 7)
  15. $s1 = $r[$i]['tresc'];
  16. if ($r[$i]['id_fraza'] == 8)
  17. $s2 = $r[$i]['tresc'];
  18. if ($r[$i]['id_fraza'] == 9)


  1. $db->query("UPDATE konfiguracja SET tresc='tak' WHERE nazwa='blokada'"); // brak konsekwencji - raz "$this->name" raz "konfiguracja" ...


Skąd Ty to wziąłeś? Nie mów, że zapłaciłeś tym profesjonalistom? tongue.gif
Adi32
To jest kod głównego programisty w firmie w której pracuję...
Nie powiem jaka to firma, ale powiem, że musze stąd uciec...
Sephirus
Znaczy powiem tak, żeby nie było - luk bezpieczeństwa jakichś mega tu nie ma - ale jest nieład, niedbalstwo i co najgorsze - choć może tu nie najistotniejsze - brak pomyślunku jeśli chodzi o wydajność...

Może się już mu nie chce...

Co do wydajności to to:
  1. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 1, $_SESSION['id_jezyk'], $_POST['keyw']);
  2. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 2, $_SESSION['id_jezyk'], $_POST['opis']);
  3. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 3, $_SESSION['id_jezyk'], $_POST['tytul']);
  4. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 4, $_SESSION['id_jezyk'], $_POST['email']);
  5. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 5, $_SESSION['id_jezyk'], $_POST['szer']);
  6. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 6, $_SESSION['id_jezyk'], $_POST['wys']);
  7. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 7, $_SESSION['id_jezyk'], $_POST['szkontakt']);
  8. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 8, $_SESSION['id_jezyk'], $_POST['s2']);
  9. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 9, $_SESSION['id_jezyk'], $_POST['konto']);
  10. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 10, $_SESSION['id_jezyk'], $_POST['licznik']);
  11. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 11, $_SESSION['id_jezyk'], $_POST['updateczas']);
  12. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 12, $_SESSION['id_jezyk'], $_POST['updateczestosc']);


Można dać w jednym zapytaniu... itd... itp...

No i global $db :/ to mi nie da zasnąć...
Adi32
Cytat(Sephirus @ 13.07.2012, 09:56:14 ) *
Może się już mu nie chce...


Szybko zgadłeś, ale edycja i rozwijanie takiego kodu to koszmar...

Edit. Zauważ, że przy każdym zapisie wszystkie pola są kasowane i dodawane na nowo.
m44
Czepiacie się, działać działa! tongue.gif
redeemer
Cytat(Sephirus @ 13.07.2012, 09:56:14 ) *
Znaczy powiem tak, żeby nie było - luk bezpieczeństwa jakichś mega tu nie ma.
Zależy co to za obiekt $db i jak wygląda metoda query. Jeśli argumenty tej metody nie są escape'owane to mamy SQL injection.
  1. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 2, $_SESSION['id_jezyk'], $_POST['opis']);


Adi32
Zgadza się, ale pocieszenie jest takie, że niezabezpieczone zapytanie są tylko w panelu administracyjnym.
Sephirus
@redeemer - Masz całkowitą rację smile.gif

po prostu biorąc ten kod:

  1. $db->query("INSERT INTO " . $this->name . " (id_fraza,id_jezyk,tresc) VALUES (%d,%d,'%s')", 2, $_SESSION['id_jezyk'], $_POST['opis']);


Założyłem że kolejne argumenty są automatycznie zabezpieczane ale w sumie jak teraz popatrzeć to chyba są walone wprost ... a to jest lipne strasznie...

Cytat
Zgadza się, ale pocieszenie jest takie, że niezabezpieczone zapytanie są tylko w panelu administracyjnym.


heh smile.gif Może to i jakieś pocieszenie ale i tak marne tongue.gif zabezpieczanie powinno być w krwi - zawsze - wszędzie. Nie można myśleć na zasadzie - to jest panel administracyjny a do niego dostęp mam tylko ja, a ja nie mam zamiaru robić SQL-inj. to mogę nie zabezpieczyć biggrin.gif - złe nawyki tongue.gif
redeemer
Jak napisał Sephirus to że jest to admin, nie ma znaczenia. Można też założyć, że ten obiekt oraz metoda query jest wykorzystywana również w frontendzie.
Niktoś
Nic dodać, nic ująć-kod z optymalnością mało wspólnego.Choć programuje w ASP.NET to nie chwaląc się ,pewnie zrobiłbym to lepiej.Brak pomysłu albo lenistwo -to nie pisał profesjonalista-albo mu się nie chciało i pisał to od ręki wyłączając przy tym część swoich szarych komórek.

  1. switch ($_GET['do']) {
  2. default:
  3. $this->show();
  4. break;
  5. }

Tego to normalnie nie rozumiem-czy to ma być instrukcja wyboru.Jakiś hack and trick?Nie wystarczyło dać if-a?
  1. if ($res['tresc'] == 'tak') {
  2. echo ''; // To echo jest tutaj po to by?questionmark.gif
  3. $this->checked = 'checked';
  4. } else {
  5. echo ''; // To echo jest tutaj po to by?questionmark.gif
  6. $this->checked = '';
  7. }

Gdzie tutaj logika?Jeśli warunek spełniony wyświetl nic jeśli nie, także wyświetl nic

Poza tym o ile to możliwe można poniższe liniki zrobić na poziomie bazy danych:
  1. if ($_POST['blokada'] == 'tak') {
  2. $db->query("UPDATE konfiguracja SET tresc='tak' WHERE nazwa='blokada'");
  3. } else {
  4. $db->query("UPDATE konfiguracja SET tresc='nie' WHERE nazwa='blokada'");
  5. }

Ustawić default(domyślną wartość) dla kolumny treść na 'nie' i jeśli warunek if ($_POST['blokada'] == 'tak') zostałby spełniony zrobić tylko update , else nie musiałoby w ogóle istnieć.
Przykład:
  1. if ($_POST['blokada'] == 'tak') {
  2. $db->query("UPDATE konfiguracja SET tresc='tak' WHERE nazwa='blokada'");
  3. }

Else nie potrzebne gdyż domyślna wartość kolumny tresc jest ustawiona na nie i nie trzeba jej zmieniać.
Adi32
@Niktoś - ja to wiem i szczerze załamuje mnie to.
To co przedstawiłem to tylko kawałeczek. Ja muszę przy tym pracować.
Tutaj ludzie uważają, że to jest programowanie obiektowe, mówię nie - "przecież są klasy"... sad.gif
Pyta mnie - "split deprecated" - mowie przestarzała, użyj preg_math - "przecież preg_math służy do validacji"... (po aktualizacji PHP)
skowron-line
@Adi32 czepiasz się każdy może mieć gorszy dzień smile.gif buahahaha
Tuminure
Cytat
użyj preg_math - "przecież preg_math służy do validacji"

To jakaś nowa matematyczna funkcja tongue.gif?

Mam nadzieję, że nie starasz się zbyt mocno nad rozwijaniem czegoś takiego wink.gif.
Adi32
Cytat(Tuminure @ 13.07.2012, 12:03:09 ) *
To jakaś nowa matematyczna funkcja tongue.gif?

Mam nadzieję, że nie starasz się zbyt mocno nad rozwijaniem czegoś takiego wink.gif.


Kiedy tu trafiłem pomyślałem, że użyje doświadczenia jakie mam aby to "rozwinąć" ale nie, spotkało się to z oporem gdyż tek kto ma ciepłą posadkę i nikogo nad sobą nie potrzebuje sie uczyć.

Wkleiłem tylko niewielki kawałek kodu nic nie prezentujący żeby nikt się nie przyczepił ale spróbujcie sobie wyobrazić jak wygląda kod sklepu...
Proponowałem Zenda - zapomnij ... "jak chcesz to sam zrób coś prostszego", kto coś łapie wie, że mija się to z celem...
redeemer
W takim razie szukaj innej firmy, bo niczego się nie nauczysz.
everth
@Adi32
Jesteś romantykiem. Rzeczywistość jest dużo gorsza niż to co podałeś biggrin.gif
Adi32
Cytat(redeemer @ 13.07.2012, 12:09:30 ) *
W takim razie szukaj innej firmy, bo niczego się nie nauczysz.


Szukam... Mam nawet zaproszenia na kilka rozmów.

Cytat(everth @ 13.07.2012, 12:09:49 ) *
@Adi32
Jesteś romantykiem. Rzeczywistość jest dużo gorsza niż to co podałeś biggrin.gif


A co dokładniej przez to rozumiesz? Ja rozumiem, że mogą być gorsze kody, ale chyba nie w "profesjonalnej firmie"...
Niktoś
Jak to jest Jego obiektówka, to wklej jakiś kod strukturalny, chciałbym wiedzieć jak wygląda. wink.gif
Adi32
Cytat(Niktoś @ 13.07.2012, 12:12:17 ) *
Jak to jest Jego obiektówka, to wklej jakiś kod strukturalny, chciałbym wiedzieć jak wygląda. wink.gif

Żeby ukazać jego moc musiałbym wkleić całe 500 linij pliku top.
Boje się w ogóle tam zaglądać...
skowron-line
Cytat(Adi32 @ 13.07.2012, 10:11:22 ) *
A co dokładniej przez to rozumiesz? Ja rozumiem, że mogą być gorsze kody, ale chyba nie w "profesjonalnej firmie"...

Dobrze że dodałeś cudzysłów bo skoro tak wygląda programowanie w tej firmie to ciężko nazwać ją profesjonalną.
Rzuć linki do arcydzieł tego pana to czempioni od sqlInjection i XSS popracują nad tym smile.gif

A tak już całkiem na poważnie to uciekaj z takiej firmy, Lepiej pracować za mniejsze pieniądze niż uwsteczniać się pisząc takie rzeczy. Co z tego że łykniej doświaczenia na papier jak twoje umiejętności (chociaż tu nabywasz umiejętności pracy z cudzym kodem smile.gif ) się nie rozwiną.
Niktoś
Cytat
A tak już całkiem na poważnie to uciekaj z takiej firmy, Lepiej pracować za mniejsze pieniądze niż uwsteczniać się pisząc takie rzeczy. Co z tego że łykniej doświaczenia na papier jak twoje umiejętności (chociaż tu nabywasz umiejętności pracy z cudzym kodem smile.gif ) się nie rozwiną.


Też tak sądzę.Taki proffesjonalista nawet nie powinien szkolić osoby po gimnazjum lub szkole średniej.
Cytat
Pyta mnie - "split deprecated" - mowie przestarzała, użyj preg_math - "przecież preg_math służy do validacji"... (po aktualizacji PHP)

Takich ,rzeczy to on Ciebie się nie powinien w ogóle pytać.Jeśli chodzi o polecenie split() to jest ona depracet dlatego,że w swojej metodzie używa ereg'ów ,należało by użyć polecenia preg_split lub prościej str_split.
Adi32
Można powiedzieć, że trafiłem tu z ulicy... Bez żadnego udokumentowanego doświadczenia ani pracy związanej programowaniem, także chciałem chociaż 2 lata posiedzieć żeby mieć "te 2 lata" w CV ale i tego nie będę miał. Płaca to mniej niz 2k także też nieciekawe tylko problem z pracą w Lublinie...
m44
Jeszcze nie raz zobaczysz taki kod, a nawet gorszy i jeszcze mający być w swoich założeniach narzędziem do zarabiania kasy, z konkretnymi planami biznesowymi.
Świat jest daleki od doskonałości.
skowron-line
Cytat(m44 @ 13.07.2012, 10:36:16 ) *
Jeszcze nie raz zobaczysz taki kod, a nawet gorszy i jeszcze mający być w swoich założeniach narzędziem do zarabiania kasy, z konkretnymi planami biznesowymi.
Świat jest daleki od doskonałości.

Zgadzam się z tym. Często gęsto bywa tak że ludzie strają się pisać piękny kodzić i tak jest ale przychodzi dzień kiedy musza coś na szybko wpisać i wtedy takie babole powstają upchnięte w każde wolne miejsce w pliku. Takie rzeczy można zobaczyć w wielu projektach które na pierwszy rzut oka wydaja się byc profesjonalne i takie są do pewnego pliku / lini.
toffiak
Taki kod można wybaczyć freelancerowi, taka osoba napisze coś dostanie za to pieniądze i nic go już to nie obchodzi, pewnie i tak nigdy już tego nigdy nie zobaczy. Ale jeśli jest to osoba która wie że będzie na tym pracować to sama strzela sobie w kolano. Rozwój/pielęgnacja takiego potworka to męczarnia.
Sephirus
Dla jaj możesz przy jakimś zadaniu zapytac tego swojego profesjonalistę jakiego wzorca projektowego użyłby aby uzyskać dobrą uniwersalność tego co będziesz robił biggrin.gif

Chciałbym zobaczyć jego minę tongue.gif

Swoją drogą z czymś takim spotyka się chyba każdy... Ja w firmie gdzie pracuje też mam parę "starych" aplikacji i ostatnio w jednej z nich napotkałem $HTTP_POST_VARS['...']... pamiętam to sprzed X lat ale dla kogoś kto niedawno zaczął prace z PHP wywołało by to co najmniej ciekawość biggrin.gif Nie mówiąc już o tym, że spora część aplikacji nie jest upgrade'owana a łatana jedynie... jeśli coś działa mniej-więcej jak należy a ma 10 lat to firmie nie chcę się tracić zasobów na upgrade... smile.gif Wtedy dopiero jest kosmos jak trzeba pracować w starym, 10-letnim kodzie strukturalnym pisanym przez takich właśnie "profesjonalistów" biggrin.gif
Adi32
Cytat(Sephirus @ 13.07.2012, 13:49:44 ) *
ostatnio w jednej z nich napotkałem $HTTP_POST_VARS['...']...


Yymmmnn taaak... Spotykam się z tym często...
W moim przypadku hehe jest wiele gorzej, trzeba zrobić nową stronę - sklep - stawia się ją na tym skrypcie na którym stawiało się ostatni sklep. I w ten sposób nie wiadomo ile osób nawpisywało swoje kwiatuszki do tego "wzoru". Dodatkowo często pojawia się kompletnie nie uważana przeze mnie kwestia "przekazania" projektu innej osobie bo ktoś idzie na tydzień na urlop. W zespole zgranym, który pisze obiektowo jeszcze mogłoby to przejść ale kiedy każdy ma własny zamysł co do metody rozwiązania konkretnego problemu to takie "upłynnienie" pracy nad projektem powoduje nawet kilkukrotne wydłużenie pracy nad stroną gdy zajmuje się nią na zmianę 4 osoby...
prowseed
@Adi32
Jeśli pracujesz tam, gdzie myślę, że pracujesz, to powiem tak- nie ładnie jest tak psioczyć na kolegów.
Najpierw poznaj realia pracy pod presją czasu i sens powiedzenia: "czas to pieniądz".

Każdy kod może być piękny, ale jeśli odłożymy go na półkę i po roku okaże się, że trzeba dodać/zmienić w nim funkcjonalność, dopisać cokolwiek, to co- będziesz analizował wszystko od początku i restrukturyzował logikę aplikacji, czy po prostu dopiszesz co masz dopisać i zamkniesz? Jeśli wybierzesz drugą opcję, a z biegiem czasu dojdą kolejne poprawki, to oczywiście- zacznie się robić śmietnik, a naprawa tego śmietnika może być równoznaczna z przepisywaniem wszystkiego od początku.

Dodatkowo nie zapomnij, że ludzie nie pracują nad jednym kodem non-stop. To też ma znaczenie, gdy nagle masz do czegoś wrócić, w między czasie coś tam jeszcze gdzieś poprawić. Często w takich sytuacjach stawia się na prostotę, a nie kompleksowość.

I jeśli ktoś Ci mówi: "to zrób lepszy", to po prostu zrób lepszy. Na pewno nikt Ci nie będzie miał tego za złe, a przyczynisz się do rozwoju w dobrym kierunku. Pytanie tylko, czy czasowo będziesz w stanie się z tym wyrobić. I czy ogarniesz ogrom aplikacji, która bądź co bądź nie skupia się w kilku pliczkach.

Nie oczerniaj kolegów sypiąc jakimiś kodami sprzed dziesięciu lat, które były poprawiane przez n+1 osób. Ktoś czegoś nie zrozumiał na szybko, to po prostu dopisał po swojemu nie chcąc psuć tego, co już działa.
Niktoś
A ja jestem tego zdania -jeśli coś robisz ,rób to najlepiej lub staraj się robić.Nie widać starania w kodzie , który autor przedstawił. Nie wygląda on na profesjonalny kod .Jeśli robi tak nagminnie to też bym był wkurzony, gdyż poprawiać po kimś to już dodatkowe obciążenie.
prowseed
Cytat(Niktoś @ 13.07.2012, 23:56:47 ) *
A ja jestem tego zdania -jeśli coś robisz ,rób to najlepiej lub staraj się robić.


A skąd wiesz, że się nie starali? : )
Pewnie, że tak- ja też jestem takiego zdania i zawsze staram się dążyć do perfekcji.
Szkoda tylko, że nie zawsze warunki zewnętrzne mi na to pozwalają...
paxton
I dlatego PHP ma taka opinie jaka ma.
Adi32
Cytat(prowseed @ 13.07.2012, 23:42:28 ) *
@Adi32
Jeśli pracujesz tam, gdzie myślę, że pracujesz, to powiem tak- nie ładnie jest tak psioczyć na kolegów.
Najpierw poznaj realia pracy pod presją czasu i sens powiedzenia: "czas to pieniądz".

Psioczyć na kolegów a pokazać poziom środowiska swojej spracy to (może niewielka) ale różnica. Znajomi z pracy to świetni ludzie i doskonale znają moje zdanie na temat ich kodów które tu przedstawiłem. Dlatego postanowiłem pokazać "kawałek".

Cytat(prowseed @ 13.07.2012, 23:42:28 ) *
Każdy kod może być piękny, ale jeśli odłożymy go na półkę i po roku okaże się, że trzeba dodać/zmienić w nim funkcjonalność, dopisać cokolwiek, to co- będziesz analizował wszystko od początku i restrukturyzował logikę aplikacji, czy po prostu dopiszesz co masz dopisać i zamkniesz? Jeśli wybierzesz drugą opcję, a z biegiem czasu dojdą kolejne poprawki, to oczywiście- zacznie się robić śmietnik, a naprawa tego śmietnika może być równoznaczna z przepisywaniem wszystkiego od początku.

Chyba nie przyjrzałeś się zbyt dokładnie temu kodowi. Uważasz, że był pisany na szybko? Zrobić to w sposób "normalny" byłoby 2 razy szybciej.
Na tym kodzie pracuje się cały czas a mi znudziło się już przerabianie tego z każdym projektem który przejmuję.

Cytat(prowseed @ 13.07.2012, 23:42:28 ) *
Dodatkowo nie zapomnij, że ludzie nie pracują nad jednym kodem non-stop. To też ma znaczenie, gdy nagle masz do czegoś wrócić, w między czasie coś tam jeszcze gdzieś poprawić. Często w takich sytuacjach stawia się na prostotę, a nie kompleksowość.

Bywa, ale robić to zawsze i wszędzie? Nigdy nie używać wcięć? Tak sie po prostu nie robi...

Cytat(prowseed @ 13.07.2012, 23:42:28 ) *
I jeśli ktoś Ci mówi: "to zrób lepszy", to po prostu zrób lepszy. Na pewno nikt Ci nie będzie miał tego za złe, a przyczynisz się do rozwoju w dobrym kierunku. Pytanie tylko, czy czasowo będziesz w stanie się z tym wyrobić. I czy ogarniesz ogrom aplikacji, która bądź co bądź nie skupia się w kilku pliczkach.

Nie oczerniaj kolegów sypiąc jakimiś kodami sprzed dziesięciu lat, które były poprawiane przez n+1 osób. Ktoś czegoś nie zrozumiał na szybko, to po prostu dopisał po swojemu nie chcąc psuć tego, co już działa.


Rozumiem, że chciałeś pokazać całą sprawę z drugiej strony ale nie masz racji. Są rzeczy które można robić jak sie pisze dla kolegi w domu ale nie gdy pracuje się w "poważnej" firmie. To przyczynia się do kilkukrotnego wydłużenia całych projektów. Skryty napisane w tym roku wyglądają tak samo a rozwinięcie czegokolwiek to koszmar. "Zostałem oszukany", obiecano mi tu rozwój a jest pływanie w kisielu i pogoń za zyskiem. Na nikogo nie psioczę poza złą organizacją firmy.
Daiquiri
Adi32, wiesz każdy może znaleźć jakiegoś "potworka" z realizacji komercyjnej roku 2005 i narzekać na brak profesjonalizmu smile.gif. Nie zrozum mnie źle, nie twierdzę że się mylisz i pracujesz z niedocenianymi geniuszami. Wiem jednak jak potrafi wyglądać realizacja produktów stricte komercyjnych. Istnieje wiele czynników, które (niestety) mogą mieć wpływ na jakość... czas, nagła zmiana "widzimisię" klienta, zmęczenie projektem, który się niemiłosiernie ciągnie i mamy ochotę go zwyczajnie zamknąć itd..

Wiem, że nie powinno nas to usprawiedliwiać, niemniej jednak zdarza się, że coś zostanie dorobione przy pomocy programistycznego odpowiednika taśmy klejącej smile.gif. Pytanie brzmi czy był to szczyt możliwości programisty pracującego na etacie w komfortowych warunkach, czy kod, który powstał na wczoraj i przewrócił cały projekt do góry nogami. Być może ostatecznie firma stwierdziła, że kod jaki będzie taki będzie, ale firma musi zarabiać.

Wiele firm w ofertach pracy umieszcza informację o ogromnych "możliwościach rozwoju", niestety tych możliwości to ani widu ani słychu. Wiecie coś na zasadzie "Młoda, dynamiczna i prężnie rozwijająca się firma poszukuje...". Ostatnio niemalże każda firma poszukująca pracownika jest nie tylko młoda i dynamiczna, ale i prowadzi niebywałą ekspansję pracowniczą wink.gif.

Innymi słowy należy doceniać firmy, które faktycznie pozwalają nam się rozwijać - gdyż, wbrew pozorom, odnoszę wrażenie iż pracodawcom wcale nie przychodzi to tak naturalnie smile.gif.
!*!
Cytat(Daiquiri)
Wiele firm w ofertach pracy umieszcza informację o ogromnych "możliwościach rozwoju", niestety tych możliwości to ani widu ani słychu. Wiecie coś na zasadzie "Młoda, dynamiczna i prężnie rozwijająca się firma poszukuje...". Ostatnio niemalże każda firma poszukująca pracownika jest nie tylko młoda i dynamiczna, ale i prowadzi niebywałą ekspansję pracowniczą


Oni z ofertami pracy robią dokładnie to samo co z kodem: ctrl+c/ctrl+v i oczywiście obowiązkowo "jesteśmy liderami w branży".
Adi32
Przykre jest to co piszecie. Miałem kiedyś nauczyciela, który dość ostro powtarzał mi "pisz kod zawsze najwyższej jakości jak potrafisz".
Wziąłem to do siebie bardzo poważnie i zawsze się do tego stosuje.

Cytat
czas, nagła zmiana "widzimisię" klienta, zmęczenie projektem


Właśnie dlatego. Z doświadczenie mimo, że niewielkiego wiem, że w większości sytuacji kod który został napisany wyższej jakości niż niższej jest bardziej podatny na zmiany z powodu "widzimisię" klienta.
Dla mnie pojęcie programowania zamieniło się w swego rodzaju sztukę, przyjemność sprawia tylko w tedy gdy zrobione jest najlepiej jak się da, z pasją.
Bolesne jest wkładanie siebie w kod który zaraz zostanie spiepszony a jeszcze gorsze jest to, że mówicie, że wszędzie tak jest.
Mam nadziję, że sie mylicie.
!*!
Cytat(Adi32)
Dla mnie pojęcie programowania zamieniło się w swego rodzaju sztukę, przyjemność sprawia tylko w tedy gdy zrobione jest najlepiej jak się da, z pasją.


Wypalisz się w ten sposób.
Daiquiri
Adi32, nikt nie napisał, że tak jest wszędzie. Po prostu zdarza się, że nasza rzeczywistość pisania błyskotliwego kodu w domu i na półkę, zderza się z rzeczywistością, w której Twój kod musi na siebie zarabiać. Ba, w grę wchodzi jeszcze niezbyt sterylne środowisko, w którym cudze błędy (PM stwierdzi, że poprawki naniesiesz w 3 dni, gdzie realny czas to 5) mają wpływ na to co robisz. Tak jak pisałam, jeżeli ktoś daje nam się rozwijać i jeszcze za to płaci - powinniśmy się cieszyć.
Adi32
Cytat(!*! @ 14.07.2012, 10:08:00 ) *
Wypalisz się w ten sposób.

Wypalę? A ja myślałem, że taka praca to spełnienie marzeń. Robić coś najlepiej jak się potrafi dążąc do "doskonałości" (wiem, że tu nie ma takiego pojęcia).

Cytat
Adi32, nikt nie napisał, że tak jest wszędzie. Po prostu zdarza się, że nasza rzeczywistość pisania błyskotliwego kodu w domu i na półkę, zderza się z rzeczywistością, w której Twój kod musi na siebie zarabiać. Ba, w grę wchodzi jeszcze niezbyt sterylne środowisko, w którym cudze błędy (PM stwierdzi, że poprawki naniesiesz w 3 dni, gdzie realny czas to 5) mają wpływ na to co robisz. Tak jak pisałam, jeżeli ktoś daje nam się rozwijać i jeszcze za to płaci - powinniśmy się cieszyć.


Ja uważam, że to jest cofanie się. Wszyscy wiemy, że OOP to przyszłość a ja nie mam z tym praktycznie styczności.
Miałem projekt, który był niemożliwy do wykonania w takim terminie jaki podano klientowi. I tu się z Tobą zgodzę, wstyd mi za kod który tam jest ale nie miałem wyjścia. Jak mam tam coś rozwinąć to ciarki mnie przechodzą.
!*!
Cytat(Adi32 @ 14.07.2012, 10:09:56 ) *
Wypalę? A ja myślałem, że taka praca to spełnienie marzeń. Robić coś najlepiej jak się potrafi dążąc do "doskonałości" (wiem, że tu nie ma takiego pojęcia).


Rzeczywistość jest zupełnie inna. W pracy, w zespole wypalenie przychodzi później. I nie zdziw się jak będziesz za jakiś czas pisać kod tak, jak przedstawiłeś wyżej. To w pewnym momencie jest nieuniknione, po prostu zadajesz sobie pytanie "po co mam się męczyć, nie chce mi się".
Jako jednoosobowa działalność, jest jeszcze gorzej, bo masz na głowie nie tylko kod, ale i wszytko inne.
Adi32
Cytat(!*! @ 14.07.2012, 10:14:37 ) *
Rzeczywistość jest zupełnie inna. W pracy, w zespole wypalenie przychodzi później. I nie zdziw się jak będziesz za jakiś czas pisać kod tak, jak przedstawiłeś wyżej. To w pewnym momencie jest nieuniknione, po prostu zadajesz sobie pytanie "po co mam się męczyć, nie chce mi się".
Jako jednoosobowa działalność, jest jeszcze gorzej, bo masz na głowie nie tylko kod, ale i wszytko inne.


Twoje sceptyczne podejście widać w wielu Twoich postach. Dlaczego tak pesymistycznie do tego podchodzisz? Czy Ty piszesz taki kod?
Mam nadzieje, że nie masz racji co do tego wypalenia ale jedno wiem na pewno - nigdy nie będę tak pisał. Nawet jakby mi się nie chciało to jest to utrudnianie sobie życia.
!*!
Cytat(Adi32 @ 14.07.2012, 10:21:12 ) *
Twoje sceptyczne podejście widać w wielu Twoich postach. Dlaczego tak pesymistycznie do tego podchodzisz? Czy Ty piszesz taki kod?
Mam nadzieje, że nie masz racji co do tego wypalenia ale jedno wiem na pewno - nigdy nie będę tak pisał. Nawet jakby mi się nie chciało to jest to utrudnianie sobie życia.


Ponieważ pasja programowania i klepania kodu mija z czasem, szczególnie gdy dostajesz kod po kimś, lub musisz napisać coś na wczoraj. Pasje możesz mieć, gdy tworzysz coś swojego, całkowicie od podstaw i nikt Ci niczego nie narzuca, wtedy ok, ale nie oszukujmy się, ile jest takich zleceń? W większości trafia się klient który nie doceni Twojego talentu eleganckiej typografi, 20 godzin spędzenia na obmyślaniu czy logo dać o 20px niżej wink.gif, oraz pięknej dokumentacji kodu, formatowania, już nie wspominając o bebechach słitaśnego PDO.

Zdarza mi się napisać kod na "odwal się" (ten którego nie widać), ale idę o zakład że nie ma tu osoby na forum która mogłaby powiedzieć inaczej, pracującej więcej niż 2 miesiące w wakacje wink.gif

Cytat
nigdy nie będę tak pisał

Nie oszukuj się tongue.gif i nigdy nie mów nigdy...

Cytat
Nawet jakby mi się nie chciało to jest to utrudnianie sobie życia.

Niekoniecznie, jak to co robisz jest jednorazowe.
irmidjusz
@Adi32 nie daj się przekonać takim zgryźliwym tetrykom jak !*!, który sam już się wypalił zawodowo i teraz wszystkim wmawia, że ich czeka to samo, jeśli nie będą klepać kodu na" odwal się" wink.gif smile.gif

A z tej pracy, jeśli nic się nie zmieni, uciekaj. Nawet nie chodzi o to, że niczego ciekawego tam nie zrobisz, ale po prostu jak zostaniesz, to się z czasem wypalisz i naprawdę nie będzie Ci się chciało. Nie mówiąc już o tym, że zdegenerujesz się do roli klepacza, stracisz jakąkolwiek przyjemność z programowania i nauczysz jedynie "tumiwisizmu".
prowseed
Cytat(Adi32 @ 14.07.2012, 10:21:12 ) *
Twoje sceptyczne podejście widać w wielu Twoich postach. Dlaczego tak pesymistycznie do tego podchodzisz? Czy Ty piszesz taki kod?
Mam nadzieje, że nie masz racji co do tego wypalenia ale jedno wiem na pewno - nigdy nie będę tak pisał. Nawet jakby mi się nie chciało to jest to utrudnianie sobie życia.


Hmm, nawiązując do tego, że napisałeś iż jest to Twoja pierwsza praca, wydaje mi się, że zderzyłeś się z czymś co Cię przeraża i popadasz w pewną skrajność. Niestety, w firmach jest tak, że za projekt płaci klient i uwierz mi, go nie obchodzi jak zaprojektujesz dodawanie newsów, go obchodzi by mógł tego newsa dodać i wstawić tam tabelkę i by zrobione to było jak najszybciej, bo ma dużo zamówień z Niemiec. Albo to zaakceptujesz i będziesz starał się przejść przez tą burzę znajdując z czasem złoty środek (jak u Kochanowskiego : ) albo się przestraszysz i odejdziesz, miej tylko na uwadze to, że w różnych firmach jest różnie. W moim przypadku to akurat nie jest pierwsza praca (zaczynałem w wieku 16 lat, ale zgodnie z umową nie mogę powiedzieć gdzie smile.gif ) i patrząc przez pryzmat starej firmy tu gdzie teraz jestem jest o niebo lepiej. Ba, nawet o dwa nieba. Ja akurat pracuję w trochę innym dziale (na pewno z nas żartujecie ;] ) jako grafik i jest fajnie, jestem kreatywnym, moje pomysły wchodzą bezpośrednio w życie, to ja proponuję rozwiązania, ale czasem zdarzy się klient typu "logo większe i na środek" i wtedy pozostaje tylko rozłożyć ręce i ustawić mu to logo na środku... Bo w końcu to jego projekt i on za niego płaci.
irmidjusz
Cytat(prowseed @ 14.07.2012, 12:39:42 ) *
Niestety, w firmach jest tak, że za projekt płaci klient i uwierz mi, go nie obchodzi jak zaprojektujesz dodawanie newsów, go obchodzi by mógł tego newsa dodać i wstawić tam tabelkę i by zrobione to było jak najszybciej

Niestety, smutna prawda sad.gif

Cytat(prowseed @ 14.07.2012, 12:39:42 ) *
zaczynałem w wieku 16 lat, ale zgodnie z umową nie mogę powiedzieć gdzie smile.gif

Ty świntuszku...
d3ut3r
Nie można mieszać pisania na szybko , z pisaniem źle, to że do pokoju wpada PM i mówi, że na jutro jest potrzebna poprawka nie oznacz jeszcze, że mamy zapomnieć o podstawach optymalizacji. Tworzenie pustych switchów to przecież nie wynik pośpiechu tylko niechlujstwo lub niedouczenie.

Każdy programista ma lepsze i gorsze dni, ale gorszy dzień nie oznacza zapomnienia podstaw. Jasne wówczas pisze sie wolniej, testuje jeszcze wolniej czasem 1h myślisz nad rozwiązaniem na które wczoraj na pewno wpadłbyś po 10 min zastanowienia.

Na obronę autora przytoczonego skryptu można by powiedzieć, że jeżeli robimy coś "na odwal się" to PM powinien dostać info : "działa, ale wymaga optymalizacji / poprawek" to co on z tym zrobi to jego broszka smile.gif być może nikt nie zgodził się na poprawianie tego ....
Pilsener
Zawsze mówiłem, że lepszy dobry kod strukturalny niż sieka pełna słów "this" thumbsdownsmileyanim.gif

A co do kodu to hmmm, pracując w dużych korporacjach widywałem dużo gorsze smile.gif Wszystko zależy od tego, kiedy był pisany. Jeśli w czasach zegarów na stronie to można strzelić piwko i się śmiać, sam nieraz jak się nawalę to nachodzi mnie nostalgia, otwieram wtedy swoje stare skrypty i buahaha, ehehehe, hyhyhyhy ohno-smiley.gif a kto nie znał global ten lame smile.gif

Ale jeśli ktoś niedawno popełnił taki kod to hmmm, można strzelić piwko i zastanowić się, czy to programista CNC który dorwał się przypadkiem do PHP (a co ja, w PHP nie napiszę?) czy ktoś zatrzymał się na etapie zegarów na stronie i nie potrafi ruszyć dalej, w stronę imienin i frejmów.

Może to być też działanie celowe i zamierzone - w myśl hasła "jaka płaca taka praca" - przy obowiązującym w większości firm ujemnym budżecie na szkolenia (wyszło PHP 5, więc zrzucamy się na książkę) może to dać taki efekt, możliwe też że mamy tu działanie szatańsko cwane - tworząc kod zrozumiały tylko dla siebie i mocno zawiły zapewniamy sobie kolejne roboczogodziny i wyłączność na pracę nad projektem, niemożliwe staje się możliwe - jesteśmy NIEZASTĄPIENI! Lkingsmiley.png Potem byle hołysz bez paranteli nie rozkmini archaicznego kodzidła, potrzebny będzie pra-pra-pra-parent siegający korzeni pehapa, matuzalem skryptu co wykiełkował prosto z globala smile.gif Młodzież wychowana na jakimś OOP nie da rady smile.gif
prowseed
Wow, Pilsener, postawiłbym Ci piwko za tą wypowiedź smile.gif

//EDIT
@Adi32
Wracając do tematu, nie chciałem ukazać problemu z drugiej strony. Chciałem pokazać, że ludzie tam siedzący, to nie półgłówki, bo tak zabarwiałeś swoje wypowiedzi...
Adi32
@Pilsener - Również postrawiłbym Ci piwko za tego posta smile.gif
@prowseed - Miałem na myśli wyłącznie niedbalstwo co do pisania w PHP, nie zwracanie uwagi, że ktoś inny będzie się z tym..., zero przemyślenia jak zaprojektować nowy projekt, obrzydzenie do uczenia się noeych rzeczy w tym OOP. Jeżeli moje wypowiedzi wskazywały na coś innego to to jest sprostowanie.
solificati
Cytat(Adi32 @ 14.07.2012, 10:12:52 ) *
Wszyscy wiemy, że OOP to przyszłość a ja nie mam z tym praktycznie styczności.

Teraz programowanie funkcyjne jest trendy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.