Wpis z mikrobloga

Mirki, mam #pytanie do #symfony2 #php #angularjs - po raz drugi, bardziej sprecyzowane ( ͡ ͜ʖ ͡)

- Mam sobie listę złożonych wniosków w panelu admina w różnych kategoriach
- Obok każdej kategorii chcę umieścić liczbę NOWYCH, nie rozpatrzonych przez admina wniosków

Wszystko to jest oparte na AngularJS, więc w Symfony jest to REST API.

I teraz nie wiem jak tą liczbę nowych wniosków wykonać.
Czy:
- wysyłać nowy request do API z liczbą nowych wniosków w danej kategorii (trochę głupie, nawet bardzo)
- wysyłać to do Angulara razem z obiektem kategorii, czyli np.
category_name: Sport
nierozpatrzone: 14

Ten drugi sposób uważam za bardziej poprawny, więc:
- jak wykonać to od strony Symfony, tj. w encji z kategorią wniosków dodać pole unread (które będzie bez adnotacji @ORM, czyli bez odzwierciedlenia w bazie) i później po pobraniu kategorii przepuścić je przez foreach i dopisać do tego pola "unread" liczbę nierozpatrzonych wniosków ? ( ͡ ͜ʖ ͡) Januszowe bardzo, tak więc nie wiem w jaki sposób to rozwiązać :(
  • 53
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

nie wiem po co mi przy wyswietlaniu czegos pelne obiekty


@Jurigag: Mnie też zazwywczaj niepotrzebne pełne. Wręcz nie powinno się encji do widoku wrzucać tylko zamieniać to na jakieś ViewModele czy inne DTO. Bo czemu szablon miałby mieć możliwość dostępu do metod domenowych?

Ale właśnie: jeśli miałbym się bawić w takie kombinacje to albo dlatego, że daje mi to lepszy kod (warstwa ViewModeli) albo dlatego, że akcja wymaga wysokiej wydajności.
  • Odpowiedz
@MacDada: ja tam się nie zgodzę, u mnie w projekcie po dodaniu partial i getArrayResult czas odpowiedzi wzrósł 2-3x(masa joinów, hydracji i innych cudów, a wten sposób zostało wywalone sporo zbędnego overheada)

znaczy najchętniej to bym w-----ł tego doctrinea i symfony, ale jak jest już projekt na nim no to nie będę całości przepisywał
  • Odpowiedz
zresztą lepiej użyć po prostu innego orma i tyle


@Jurigag: No to Ci napisałem, jak Doctrine ssie wydajnościowo, to czemu go używasz?

Ale ja ogólnie lubię Doctrine, bo generalnie fajnie mapuje na „czyste
  • Odpowiedz
ja tam się nie zgodzę, u mnie w projekcie po dodaniu partial i getArrayResult czas odpowiedzi wzrósł 2-3x(masa joinów, hydracji i innych cudów, a wten sposób zostało wywalone sporo zbędnego overheada)


@Jurigag: Być może masz specyficzne zastosowanie, bo ja zazwyczaj nie robię „masy joinów i innych cudów”. Zazwyczaj max 1 czy 2 joiny starczą.

No i druga rzecz, co to jest przyspieszenie
  • Odpowiedz
@MacDada: no tylko u mnie zapytanie robiło się 100 ms xd także 20-30 ms a 100 ms to sporo, potem dochodzi widok(szybciej jest iterować po tablicach niż po obiektach) także u mnie sam request to było o 30-40% szybciej, było to zauważalne od razu - no i była potrzeba - bo strona zwyczajnie zamulała

i tak finalnie ostatnio skończyło się na paginacji + raw query bo zapytanie zostało tak rozbudowane
  • Odpowiedz
no tylko u mnie zapytanie robiło się 100 ms xd także 20-30 ms a 100 ms to sporo


@Jurigag: Zależy. Czujesz, żeby zamulało? Klikasz się po stronie i Cię to razi? Jak tak, to optymalizuj.

Jakby moje zapytanko szło 100 ms to pewnie też bym się zastanowił jak to zrobić szybciej.

Ale kolegi przeliczenie śmiem twierdzić, że będzie trwało bardziej w okolicach kilku milisekund, więc sugerowanie partiali, DQLi, etc =>
  • Odpowiedz
dla mnie nie jest to prematurea optimization


Podałem Ci kiedy nazywam coś premature optimization: wtedy, gdy nie zmierzysz, że jest problem tylko z góry zakładasz, że jest. A kilka milisekund dla akcji, która trwa kilkaset to jest w 97/100 przypadków żaden problem. Skoro wydajność nie jest problemem, to robienie na start kombinacji jest premature optimization.

Tak czy nie?

zmiana
  • Odpowiedz
@MacDada: no z getResult na getArrayResult xd

dla mnie premature optimization jest wtedy kiedy zrobienie tego premature optimization wymaga jakiegokolwiek wysiłku
  • Odpowiedz
getResult na getArrayResult


@Jurigag: Ale chcesz robić OOP czy nie? Bo latanie po arrayach za wiele wspólnego z OOP nie ma.

Druga rzecz, dla programisty obiekt ma określoną strukturę (w klasie: pola, akcesory) => array nie ma, więc jest mniej czytelny, bo trzeba analizować
  • Odpowiedz
@MacDada: ale gdzie przy restapi będziesz latał po obiektach ? po co i na co ? przecież w restapi pobierasz coś bazy i zwracasz to i tyle, nic więcej się z tym nie robi zwykle
  • Odpowiedz