Programistyczne WTF jakie Was spotkały

Programistyczne WTF jakie Was spotkały
cepa
  • Rejestracja: dni
  • Ostatnio: dni
0
AdamPL napisał(a)

Btw. ja też widziałem gówniany kod z masą błędów np. brak normalizacji, liczba klas w projekcie obiektowym nie większa niż trzy itp. Jednak dla mnie był to argument aby zakończyć współpracę z taką firmą. Nie będę się podpisywał pod takim syfem i później męczył się z rozwijaniem takiego gówna.

i dlatego pracuje gdzie indziej :P

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Nie spodziewałem się, że taka dyskusja się wytworzy, przecież sprawa jest jasna- ktoś dał ciała i tyle.
I tu nawet nie trzeba mieć pojęcia o bazach danych, wystarczy chłopski rozum. Po co powielać wiele razy te same dane. To tak, jakby w programie nie używać stałej, tylko za każdym razem wpisywać od nowa wartość - takie samo utrudnianie sobie życia.

@cepa - to, że jest to "jednorazowy mały projekt", nic nie znaczy. Projekty często mają tendencję do rozrastania się. Ja co prawda jasnej przyszłości tej firmie nie wróżę, ale mają swój raczej unikatowy produkt na rynku, może znajdą jeleni i system będzie się rozwijał. Ale taka tabela raczej mu w rozwoju nie pomoże.

Przyznam się, że ze swoją ułomną wyobraźnią nie wiem jak np. zrobić sensowny GUI, umożliwiający użytkownikowi łatwe wprowadzanie danych adresowych. Np. najpierw wybieramy z comboboxa województwo, potem z drugiego powiat, z trzeciego miasto, itd. Gdyby było normalnie, nie byłoby to problemem, ale z taką tabelą, to województw będzie około setki, powiatów kilkanaście tysięcy a miast miliony - wszystko w zależności od inwencji wklepujących dane.

Byłem dziś u nich, więc wiem więcej. Baza danych jest wspólna dla CRM i serwisu WWW, ta tabela już jest, na dodatek wypełniona danymi, w użyciu, więc nic się z nią nie zrobi. Tworzyli ją specjaliści od WWW. Nie napiszę w jakiej technologii, bo zaraz będzie flame i teksty w stylu "to wcale nieprawda!".

Całe szczęście, że mnie obchodzi tylko kod i resztę mam gdzieś ;P

cepa
  • Rejestracja: dni
  • Ostatnio: dni
0
somekind napisał(a)

jak np. zrobić sensowny GUI, umożliwiający użytkownikowi łatwe wprowadzanie danych adresowych. Np. najpierw wybieramy z comboboxa województwo, potem z drugiego powiat, z trzeciego miasto, itd. Gdyby było normalnie, nie byłoby to problemem, ale z taką tabelą, to województw będzie około setki, powiatów kilkanaście tysięcy a miast miliony - wszystko w zależności od inwencji wklepujących dane.

no to takie trywialne faktycznie nie jest, u nas mielismy podobny problem niedawno, tzn: jak dodac do kategori produkt kiedy zarowno kategorii jak i produktow moga byc tysiace, skonczylo sie na uzyciu ajaxowego autocomplete (jquery) - wpisujesz w inputa ciag znakow i na bieŻąco znajduje kilka najbardziej pasujacych rekordow w bazie, chociaz jakies super wydajne toto nie jest.

Deti
  • Rejestracja: dni
  • Ostatnio: dni
0

Ciekawostka z .NET Reflectora (fragment kodu - definicja System.Double):

Kopiuj
public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
{
  ...
    public const double NegativeInfinity = (double) -1.0 / (double) 0.0;
    public const double PositiveInfinity = (double) 1.0 / (double) 0.0;
....
}
  • Rejestracja: dni
  • Ostatnio: dni
0

To wcale nie jest nic dziwnego, te operacje ustawiaja odpowiednie bity tak ze to faktycznie jest oznaczenie nieskonczonosci, polecam przyjrzec sie standardowi.

rincewind
  • Rejestracja: dni
  • Ostatnio: dni
0

Dokładnie, według standardu IEEE:

Kopiuj
PosInf =  1.0 / 0.0
NegInf = -1.0 / 0.0
NaN    =  0.0 / 0.0
pako1337
  • Rejestracja: dni
  • Ostatnio: dni
0

Co nie zmienia faktu, że jeśli od ...nastu lat tłuką ci do głowy "cholero, nie dziel przez zero" a w kodzie takie coś uwidujesz, to lekkie WTF można załapać ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

Hmm, ale nieco pozniej na matematyce dowiadujesz sie o limesach, i tam juz to wystepuje ;d

EgonOlsen
  • Rejestracja: dni
  • Ostatnio: dni
0

Stary hackerski trick a Amigi, tak sie obslugiwalo wyjatek dzielenia przez 0 w asemblerze MC680x0.

  • Rejestracja: dni
  • Ostatnio: dni
0
AdamPL napisał(a)

Jeżeli ktoś rozumie co to jest normalizacja to tworzenie znormalizowanych tabel przychodzi naturalnie i bez żadnego wysiłku.

Prawda, tylko moim zdaniem problem pojawia się później, kiedy brakuje umiejętności żeby taką znormalizowaną bazę wykorzystać. Przed normalizacją mamy jeden prosty select i insert, prosty formularz. Po normalizacji inserty się komplikują (kiedy wpisać coś nowego podanego przez usera, a kiedy skorzystać z wartości w bazie?), formularz musi korzystać z AJAX'a bo tysięcy miast do combo boxa nie ma sensu wkładać, ten ktoś musi wiedzieć co to widok ;) IMO jeśli ktoś ma tą wiedzę to się marnuje pisząc proste CRMy albo koszt takiego pracownika może przewyższać zysk z takiej aplikacyjki.

PS. tak zapytam profesjonalistów, czy jest sens robienia tabeli Imiona (user_id, imię) dla profilu użytkownika w prostej bazce?

  • Rejestracja: dni
  • Ostatnio: dni
0

No jak juz tak idziemy to mozna zrobic tabele literki, i tabela imie bedzie miala tabele laczaca z literkami (czli wiele-do-wielu) z dodatkowym atrybutem index aby zachowac kolejnosc liter ;d
Bazy calkowicie znormalizowane nie instnieja chyba w zadnym komercyjnym produkcie, nie wiem czy w jakimkolwiek akademickim istnieja, ale jesli sie myle prosze mnie poprawic.
Ale to juz jest przyklad w druga strone, nadal nie zostalem przekonany ze przyklad ktory pokazal somekind ma sens.

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1164
0
Theq napisał(a)

IMO jeśli ktoś ma tą wiedzę to się marnuje pisząc proste CRMy albo koszt takiego pracownika może przewyższać zysk z takiej aplikacyjki.

Żadna wielka umiejętność...

PS. tak zapytam profesjonalistów, czy jest sens robienia tabeli Imiona (user_id, imię) dla profilu użytkownika w prostej bazce?

Nie. Dla nazwisk też nie.

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1
Theq napisał(a)

PS. tak zapytam profesjonalistów, czy jest sens robienia tabeli Imiona (user_id, imię) dla profilu użytkownika w prostej bazce?

Nie. Choć aż prosi się o stworzenie słownika to nie ma to sensu. Co do samej normalizacji to dość dobrze wychodzi ona jeżeli popatrzymy na bazę jak na zbiór obiektów. Umiejętne stworzenie klas i powiązań pomiędzy nimi będzie naturalnie mapować się na bazę danych.

ps. Po przeprowadzeniu normalizacji wykonuje się zazwyczaj częściową denormalizację w celu usprawnienia niektórych krytycznych procesów poprzez uproszczenie zapytań.

EgonOlsen
  • Rejestracja: dni
  • Ostatnio: dni
0
Theq napisał(a)

kiedy wpisać coś nowego podanego przez usera, a kiedy skorzystać z wartości w bazie?

Takie przypadki powinna obslugiwac logika aplikacji a nie baza.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
takisiaki napisał(a)

Ale to juz jest przyklad w druga strone, nadal nie zostalem przekonany ze przyklad ktory pokazal somekind ma sens.

Mam pewną hipotezę, dla której taka tabela ma sens.
Dane pewno były wpisywane ręcznie, a do takiej tabeli jest najłatwiej :D

  • Rejestracja: dni
  • Ostatnio: dni
0

Myslisz ze latwiej jest wpisac 1000 razy "wielkopolskie" czy raz w innej tabelce, i pozniej w tej pierwszej 1000 razy 1?
(Wiadomo ze wielkopolskie jest numer 1.)
ps Temat chyba powoli sie wyczerpuje, czekamy na nowe WTFaki.

AP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3079
0

Po normalizacji inserty się komplikują (kiedy wpisać coś nowego podanego przez usera, a kiedy skorzystać z wartości w bazie?), formularz musi korzystać z AJAX'a bo tysięcy miast do combo boxa nie ma sensu wkładać, ten ktoś musi wiedzieć co to widok

Wystarczy top 20 czy coś w ten deseń, z warunkiem na województwo, like na nazwę miejscowości i już można obsłużyć wszystkie miasta w jednym combo box.

Jeżeli chodzi o to czy wpisać coś podanego przez usera czy skorzystać z wartości w bazie to trzeba to jasno określić. Przykładowo jeżeli mamy w bazie aktualny spis kodów pocztowych, miast, województw to nie pozwalamy użytkownikowi nic dopisywać tylko oczekujemy, że wybierze coś z istniejących wartości.

PS. tak zapytam profesjonalistów, czy jest sens robienia tabeli Imiona (user_id, imię) dla profilu użytkownika w prostej bazce?

Nie nie powinno się robić osobnej tabeli na imiona czy nazwiska ponieważ imię jest atrybutem podstawowym encji.

Przykładowo mając taką relację:
id_klienta, nazwisko, ulica, kod, miasto, województwo

widzimy, że miasto jest przechodnio funkcyjnie zależne od klucza podstawowego, a województwo jest częściowo funkcyjnie zależne od klucza, którym jest miasto. Zatem po zastosowaniu 3NF (czyli 1NF i 2NF również!) powstaną trzy relacje:
id_klienta, nazwisko, ulica, kod
kod, miasto
miasto, województwo

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
takisiaki napisał(a)

Myslisz ze latwiej jest wpisac 1000 razy "wielkopolskie" czy raz w innej tabelce, i pozniej w tej pierwszej 1000 razy 1?

Mi nie.
Ale jeśli ktoś to wpisywał przepisując z jakiejś książki kodów, w której była tabelka o takiej strukturze, to jemu było łatwiej.

takisiaki napisał(a)

czekamy na nowe WTFaki.

Od kiedy poszedłem do pracy moje życie to jeden WTF ;P

  • Rejestracja: dni
  • Ostatnio: dni
0
somekind napisał(a)

Od kiedy poszedłem do pracy moje życie to jeden WTF ;P

Sad but true. Szczegolnie rozmowy z kierownikami projektu obfituja w nowe doznania.

SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3356
1

Jakis czas temu menedzer (M) z pytaniem do mnie, jaki przewiduje termin ukonczenia kodowania.
(ja) - Koniec pazdziernika.
Nastepnego dnia on do mnie, ze to moze byc problem, bo on przewidywal polowe pazdziernika.

Ze znajomym zacisnelismy zeby i kodujemy, by zdarzyc. Najblizszy project meeting:
(M) - Jak idzie praca?
(ja) - Na ktorysnasty pazdziernika zdarzymy.
(M) - A nie dalo by sie szybciej?
(ja) - Nie, dobrze bedzie jak zdarzymy.

Nastepny poniedzialek otrzymuje maila z deadline'ami projektow. Moj ma... dwudziesty ktorys wrzesnia.
(ja) - Czy to jakis blad?
(M) - Nie, musicie sie wyrobic.
(ja) - Ale to nie mozliwe, trzeba to przesunac.
(M) - Nie ma szans, bo potem idzie na tydzien do testow, a w nastepny poniedzialek - juz sie umowilem z klientem - przyjezdzaja na testy akceptacyjne..

:/

  • Rejestracja: dni
  • Ostatnio: dni
2

W mojej pierwszej pracy nauczylem sie zeby zawsze zawyzac, dwukrotnie to dobry margines. Jak zdazysz szybciej to masz 2 opcje: albo mowisz ze skonczyles i jestes mastah i nic z tego nie wynika (nie ma pieniazkow za uznanie, zazwyczaj), albo siedzisz drugi okres czasu powoli. Najpierw wykorzystywalem pierwszy sposob, jednak pozniej (bardzo szybko) drugi. Moze ktos mnie nazwa leserem, trudno.

I taka rozmowa z PM:

  • Ile czasu przewidujesz Ci to zajmie?
  • 2 miesiace.
  • Miesiace? My tu w XXX operujemy tygodniami!
  • 9 tygodni.
    (Ryk na sali, wszystkich poza mna i MP)
  • Rejestracja: dni
  • Ostatnio: dni
0

:-D
Wyśmienita riposta :-D

rnd
  • Rejestracja: dni
  • Ostatnio: dni
1

nie ma pieniazkow za uznanie, zazwyczaj

Nie ma bo taka sytuacja znaczy, że źle wyestymowałeś zadanie.
A takie planowanie z wyprzedzeniem miał wyeliminować Agile - estymuje cały zespół.

  • Rejestracja: dni
  • Ostatnio: dni
1

Masz racje ze zle estymowalem. Ale trzeba wziac kilka rzeczy pod uwage: po pierwsze primo, zawsze (zawsze ZAWSZE!) odcinali mi od tego co estymowalem, np z 9 tygodni zrobilo sie 6. Jakbym podal 2 tyg to bym dostal 1. Po drugie primo, to byla moja pierwsza praca wiec mialem nikle doswiadczenie o estymowaniu tego co i ile mi zajmie. Trudno oczekiwac abym od razu potrafil robic tak (badz co badz) bardzo trudna rzecz. Sam mowisz (calkiem sensownie) ze teraz robia to cale zespoly, oznacza to ze wychodzi to poza kompetencje jednej osoby ;d

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1

@rnd, metodyki są o kant D potłuc jeżeli przychodzi jakiś debil PM czy poniższy demon z handlowego i mówi, że ma być "na wczoraj". Jeżeli zaczniesz interweniować wyżej to pewno trafisz na kolejnego zdebilałego i awansowanego PMa, który mając do wyboru opinię handlowca, który sprzedaje i przynosi firmie zyski oraz opinię "technicznego" z działu, który nie dość, że nie zarabia to generuje zazwyczaj największe koszty to wybierze opinię handlowca "bo on zarabia na twoją pensyjkę inżynierku" (po takim tekście upadła pewna firma w USA, bo w jeden dzień odszedł cały zespół inżynierski).

cepa
  • Rejestracja: dni
  • Ostatnio: dni
0

moze to nie wtf ale mam jeden problem, a ze ostatnio o normalizacji tyle bylo to moze pomozecie :>

jest sobie portalik ktorego kazdy element ma byc komentowany: czyli przykladowo komentarze do newsow, stron, obrazkow itd itd... dodatkowo komentarz moze dodac osobnik niezalogowany, wiec musze w bazie miec jego jakas nazwe, i rozne dodatkowe dane jak ip, czas itp

Czy zrobic to lopatologicznie i tworzyc tabele komentarzy dla kazdego zasobu dostepnego w systemie i utworzyc miedzy nimi prosta relacje: np: news -> wiele komentarzy, strona -> wiele komentarzy, obrazek -> wiele komentarzy ?

Czy zrobic jedna tabele ze wszystkimi komentarzami w systemie a relacja pomiedzy nimi opierala by sie na kluczu zlozonym z dwóch pol np: resource_id i resource_type, gdzie pierwsze to id do innej dowolnej tabeli a type oznacza jakiego typu jest zasob do ktorego odnosi sie komentarz np: news, strona itd...

Aktualnie korzystam z rozwiazania prostszego (wiele tabel) gdyz jest ono latwe do zrealizowania w orm (doctrine), tyle ze nie bardzo mi sie podoba fakt iz im bardziej serwis sie rozrosnie tym wiecej prawie identycznego kodu bedzie w wielu miejscach - nie specjalnie dry to to jest :S

wasiu
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 1552
0

cepa, ja to rozwiazalem w sposob: 1 tabelka z komentarzami do wszystkiego, a dopiero dalej tworze tabelki z dwoma polami: idtypu i idKomentarza.
Dzieki temu np Entity Framework ladnie mi to parsuje jako LinkedReferences, a komentarze de facto zgromadzone sa w jednym miejscu. W sumie to prawie ze identyczne rozwiazanie jak klucz na dwoch kolumnach, acz dzialajace z EF, wiec pewnie i z innym ORM bedzie dzialac :)

Co do wtf... w polsce dalej z praca cos kiepsko i widze, ze niektore firmy przeginac zaczely maksymalnie... np dzis znajoma programistka mi opowiada iz pensje w jej pracy wszystkim zredukowali o 30%... a kto sie nie zgadza ten out...

  • Rejestracja: dni
  • Ostatnio: dni
0

A mozesz powiedziec gdzie tak zrobili? Bo pewnie mowisz o Poznaniu.

  • Rejestracja: dni
  • Ostatnio: dni
0

W firmie wdożeniowej (wdrażamy SAPA). Ja programuję w ABAPie, a obniżka dotyczy wszystkich, od programistów, przez konsultantów, po administrację.

  • Rejestracja: dni
  • Ostatnio: dni
0

No to faktycznie niezly WTF.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.