#naukaprogramowania

25
136
Doctrine i problem Lazy Loadingu

https://gildia-developerow.pl/doctrine-i-problem-lazy-loadingu/

Większość świeżych programistów, którzy pytają tych starszych o porady, słyszą: „Ucz się Symfony, Doctrine i pisz testy”. A młodzi przyjmują to za świętość i uczą się. Znają podstawowe pojęcia, po czym wchodzą na projekt, napiszą endpoint dla dużego zestawu danych i… całość wykonuje się w 13 sekund. Ta historia, choć nieco przeze mnie ufarbowana, wydarzyła się całkiem niedawno. I z chęcią podzielę się z Wami kilkoma szczegółami oraz wnioskami z tej sprawy

Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #symfony i #doctrine. Trochę #performance

Zaloguj się aby komentować

Koncept migracji bazodanowych i Doctrine 2

https://gildia-developerow.pl/koncept-migracji-bazodanowych-i-doctrine-2/ :)

Podczas tworzenia aplikacji biznesowych, nie sposób nie poruszyć tematu aktualizacji bazy danych – elementu, z którym spotykamy się w codziennej pracy. Niezależnie od typu środowiska, zawsze trafimy na temat migracji bazy danych. Na szczęście Doctrine posiada specjalnie do tego wyspecjalizowany mechanizm, którego najważniejsze elementy poruszymy w tym wpisie.

Tagi: #programowanie, #naukaprogramowania oraz #programista15k w #php, #symfony, #doctrine

Zaloguj się aby komentować

Zostań Patronem Hejto i odblokuj dodatkowe korzyści tylko dla Patronów

  • Włączona możliwość zarabiania na swoich treściach
  • Całkowity brak reklam na każdym urządzeniu
  • Oznaczenie w postaci rogala , który świadczy o Twoim wsparciu
  • Wcześniejszy dostęp, do wybranych funkcji na Hejto
Zostań Patronem
W poszukiwaniu agregatów w Domain Driven Design

https://gildia-developerow.pl/w-poszukiwaniu-agregatow-w-domain-driven-design/

Agregaty to perła pośród całego Domain Driven Design. Święty Graal wielu, którzy migrują na DDD. Niby każdy wie o ich istnieniu, jednakże znaleźć projekt z ich wykorzystaniem jest niełatwo. Przejdźmy przez ten bardzo ciekawy element taktycznego DDD.

Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #ddd i ukochana #architektura
epsilon_eridani

@MarcinKuklinski z DDD najtrudniej jest przekonać manedżment i zespół, że się opłaca

MarcinKuklinski

Trochę nie rozumiem argumentu z managementem @epsilon_eridani. To raczej zespół (liderzy techniczni, CTO) powinni dobierać sposób tworzenia oprogramowania.

epsilon_eridani

@MarcinKuklinski w małej jednostce racja, gdy jesteś wyizolowany i interesują Cie tylko kontrakty, w większym departamentach - przynajmniej z mojego doświadczenia ludzie są niechętni schodzenia z głównej linii + masz już ustalone narzędzia/frameworki. Teraz np pracuje w banku więc to już w ogóle padaka żeby cokolwiek przewalczyć.

dotevo

A co to za DDD bez agregatów? czasem ciężko je dobrze ustalić, ale aby nie było ich w projekcie to jeszcze nie słyszałem

Zaloguj się aby komentować

Kojarzy mi się, że jakiś czas temu na społeczności był poruszony temat, że po co pisać artykuł z przykładem kodu, skoro na podstawie tl;dr ChatGPT może nam wszystko, co trzeba wygenerować. Trochę mnie ten temat, jako twórcę bloga, męczył przez jakiś czas, a że trochę tego czasu już minęło, to piszę nowy wpis, zamiast udzielać się w starym.

Ciekawi mnie, co Was jako programistów, czy osoby uczące się programowania najbardziej przyciąga do czytania treści na blogach innych programistów? Bo w zasadzie możemy stwierdzić tak:

  • Potrzebuję informacji o jakimś zagadnieniu? ChatGPT może wytłumaczyć.
  • Potrzebuję kodu jakiegoś algorytmu albo szablonu jakiegoś wzorca projektowego? ChatGPT wygeneruje mi kod w dowolnym języku.
  • Potrzebuję jakiejkolwiek pomocy z programowaniem? Również ChatGPT może tutaj podpowiedzieć, a Plus nawet wyszukać za nas po internecie i powołać się na dokumentację.

Gdzie tutaj jest w takim razie miejsce na blogi programistyczne ? W ogóle czytacie jakieś regularnie, śledzicie jakichś twórców? Czy może dalej szukacie informacji po Google i korzystacie z wyników z devblogów? Jak tak, to co Was do nich przyciąga?

Bardzo mnie ten temat ciekawi, bo przez pisanie od kilku lat bloga nie czuję się odpowiednio obiektywny w temacie, a jakkolwiek na to nie spojrzeć, dotyczy mnie .

#programowanie #naukaprogramowania #programista15k #chatgpt
SzwagierPrezydenta

@marmot to zależy. Chatgpt ma tą jedną wadę że jak nie wie to sobie dopowie i wychodzą bzdury. Plus trzeba bardzo pilnować o co pytasz. Ostatnio pytałem AI ile ma być max psi w kole do roweru. Wypluło elaborat że przed użyciem roweru mam się upewnić czy w dętce nie ma psa przed rozpoczęciem jazdy

marmot

@SzwagierPrezydenta A to się zgodzę. Dlatego z ChatGPT Plus świetną sprawą jest to, że potrafi szukać w Internecie. Wtedy proszę go o źródła i cyk, znikają głupoty w odpowiedzi.

wombatDaiquiri

@marmot cieszę się że pobudzilem Cię do rozkminki mnie osobiście interesują bardziej Twoje przemyślenia, doświadczenia, przeżycia, oryginalne refleksje. Wszystko co było opisane w książkach mogę sobie przeczytać w tych książkach. Ale pewnie masz codziennie jakiś problem którego nikt wcześniej nie opisał. Czy to w pracy z ludźmi, w projekcie, w konsumowaniu dokumentacji. I o nim chciałbym przeczytać.

marmot

@wombatDaiquiri Fajnie, że się udzieliłeś, bo też nie chciałem Cię specjalnie wywoływać dlatego, że kilka tygodni temu coś napisałeś . Dzięki!

elszczepano

@marmot może kwestia tego, że jakbym miał wyżyć z prompt engineeringu, to bym jadł suchy chleb, ale jak pytam o coś ChatGPT, to czuję jakbym czytał wypracowania na język polski w gimnazjum. Mało konkretów, dużo uogólnień, lania wody, bezcelowego rozwlekania wypowiedzi. Na blogach mam tę zaletę, że często idzie znaleźć kompleksowe podejście do tematu w formie, którą da się czytać.

Zaloguj się aby komentować

Dzień dobry środowy poranku!

Dziś mamy nowy wpis na blogu Nieco długi, ale moim zdaniem bardzo potrzebny. Jest o słowie kluczowym final i dlaczego osobiście go nie lubię

Klasy finalne, PHPSpec i spam interfejsów
https://gildia-developerow.pl/klasy-finalne-phpspec-i-spam-interfejsow/ 

Podejście typu „rób tak zawsze i koniec” jest moim zdaniem słabe. Tym bardziej, jeżeli nie padają żadne argumenty. Bo jak pojawiają się argumenty, to jest również dyskusja. Tak jest w kwestii podejścia „klasa powinna być finalna by default”, a ja przychodzę z argumentami, dlaczego nie.

Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #symfony, #oop i oczywiście nie może zabraknąć #architektura (bo interfejsy)

Zaloguj się aby komentować

WykopGPT - Perspective API - dziś, 20:00

Zapraszam na kolejny live, podczas którego do naszego bota podłączymy fajne narzędzie (również oparte na AI), które wykrywa wszelkiego rodzaju szkalowania (nie tylko wielkich Polaków) oraz treści toksyczne, tak aby uniknąć wysyłania przez użytkowników pytań łamiących regulaminy OpenAI i Wykopu czy Hejto. Dodatkowo pokażę jeden z popularnych loggerów błędów aplikacji.

Tag do czarnolistowania / followania: #programujzpasterzem

#chatgpt #openai #programista15k #it #naukaprogramowania #nodejs #javascript #glupiewykopowezabawy #youtube #filmnawieczor #programowanie

https://www.youtube.com/watch?v=JuBZ2bi2qGs
CzosnkowySmok

@Sheppard30 wykopGPT?

NiosePrawde

>wykop

dzięki, wrzucam na czarno

groman43

@Sheppard30 Korzystasz z gotowego API, czy robisz coś bardziej interesującego?

Zaloguj się aby komentować

Komunikacja dwóch mikroserwisów z Symfony Messengerem
https://gildia-developerow.pl/komunikacja-dwoch-mikroserwisow-z-symfony-messengerem/

W poprzednim wpisie zajmowaliśmy się tematem przetwarzania asynchronicznego wiadomości za pomocą komponentu Symfony Messenger. Czy wiecie, że Messenger służy również do komunikacji dwóch serwisów ze sobą? Nie? No to zaraz się dowiecie

Tagi: #programowanie, #naukaprogramowania i #programista15k w #programowanie, #symfony, #architektura, #mikroserwisy

Zaloguj się aby komentować

Już za chwilę o 20:00 zaczynamy [stream ](https://www.youtube.com/watch?v=3mCb2a6NFQ0)zz) livecodingiem wykopowego bota opartego o chata gpt. Zapraszam każdego, kto interesuje się programowaniem, chciałby się czegoś dowiedzieć i w sumie to nie ma nic lepszego do roboty niż siedzenie w piwnicy dziś wieczorem ( ͡° ͜ʖ ͡°) W przyszłości zrobimy coś podobnego dla hejto.

Tag do followania / czarnolistowania: #programujzpasterzem

#chatgpt #openai #programista15k #it #naukaprogramowania #nodejs #javascript #glupiewykopowezabawy #youtube #filmnawieczor 

https://www.youtube.com/watch?v=3mCb2a6NFQ0

Zaloguj się aby komentować

WykopApi (w przyszłości też hejto) + ChatGPT

Zapraszam w czwartek o 20:00 na pierwszy odcinek z serii edukacyjnych live codingów, podczas których napiszemy użytecznego chat bota na konkurencyjny wykop w oparciu o GPT-4 i pogadamy o sytuacji w AjTi. Zachęcam do supukcji oraz obejrzeniu prologa do tego co robimy.

Tag do czarnolistowania / followania #programujzpasterzem

https://www.youtube.com/watch?v=3mCb2a6NFQ0

#programujzwykopem #naukaprogramowania #chatgpt #openai #programista15k #programowanie #nodejs #webdev #frontend #javascript #backend
koszotorobur

@Sheppard30 - przydatne do tego jak nauczyć się bycia obsługiwaczem AI - bo w niedalekiej przyszłości tylko takie prace w IT się ostaną

Sheppard30

@koszotorobur pokaze jak pisac dobre prompty pod promptengineering ;]

GrindFaterAnona

@Sheppard30 czy nagranie będzie dostępne po spotkaniu? w czwartek o 20 raczej nie będzie mnie przy kompie

Sheppard30

@GrindFaterAnona tak, bedzie na moim kanale.

GrindFaterAnona

@Sheppard30 super, to wolaj potem jak juz nagrasz

cebulion

@Sheppard30 promoty promptami, ale dlaczego to 💩 ma tak dużo "halucynacji", czy jak to po polsku będzie. Ostatnio przez miesiąc gpt 4 takie cyrki odwalał, że czułem się jakbym rozmawiał z wykopkiem. Żadne prompty nie pomagały, ignorował wszystkie instrukcje. Dopiero ostatnio się troche naprawił

Zaloguj się aby komentować

Witam wszystkich w ten śnieżny wtoreczek!  Przychodzę do Was z nowym wpisem o Domain Driven Design 
Dziś będą riki-tiki - polityki! 

Wstrzykiwanie polityki do agregatu w Domain Driven Design
https://gildia-developerow.pl/wstrzykiwanie-polityki-do-agregatu-w-domain-driven-design/

Kiedyś, podczas sesji Event Stormingu, w której brałem udział kilka lat temu, co chwilę padało zdanie „A to wyłapie jakaś polityka”. Następnie naklejaliśmy fioletową karteczkę. Wtedy nie było dla mnie jasne, czym są polityki w kontekście Stormingu oraz DDD. Dzisiaj już to wiem i chcę tą wiedzą podzielić się z Wami

Tagi: #programowanie, #naukaprogramowania i #programista15k w #php, #ddd no i #architektura oprogramowania
acgp

Zaraz ktoś napisze że nie otagowałeś jako polityka xD

bojowonastawionaowca

@acgp nieprawda, nie jestem aż tak okropny

Zaloguj się aby komentować

Dzień dobry, zachęcam do prasóweczki na weekendzik

Jak pozbyć się setterów z encji?
https://gildia-developerow.pl/jak-pozbyc-sie-setterow-z-encji/

Wszyscy dookoła mówią, że encje powinny zawierać wyłącznie logikę biznesową, a nie settery. Niby wszyscy to wiedzą, ale każdy i tak robi te settery. Ja wiem, dlaczego tak się dzieje i z chęcią Wam o tym opowiem

Tagi: #programowanie, #naukaprogramowania i #programista15k w #symfony, #doctrine i #ddd

Zaloguj się aby komentować

Wkurza Cię nowy front vikop i postanowiłeś przejść na hejto? Nic nie działa tam jak trzeba? To dobrze się składa bo w ramach nauki #frontend przygotowuję serię streamów w których spróbujemy napisać własnego klienta i pokazać, że, w co trudno uwierzyć, może być jeszcze gorzej ( ͡° ͜ʖ ͡°) Pokażę Wam jak używać wykopAPI v3 i AntDesign oraz pogadamy o życiu.

https://www.youtube.com/watch?v=stEWW7UVD4Y

Zapraszam na stream o 21:37

Tag do czarnolistowania #programujzpasterzem 

#frontend #webdev #naukaprogramowania #programowanie #react #javascript #programista15k #programista20k #wykopapi
kodyak

Kuzwa dlaczego? Czemu chcesz to sobie zrobić i jeszcze wciągasz w to innych

ramzes

@Sheppard30 otaguj to odpowiednio #2137

POWERUSER

@Sheppard30 poszło do zakładek, może kiedyś se obejrzę

Zaloguj się aby komentować

Dzieeeeń dobrego wtorku wszystkim! :)

Mamy nowy wpis na blogu!   Tym razem wyjaśniam, jaki koncept stoi za CSRF tokenem i tłumaczę, dlaczego jest on taki ważny 

Po co jest ten token CSRF?
https://gildia-developerow.pl/po-co-jest-ten-token-csrf/ 

Wchodząc w świat Symfony niektóre rzeczy robimy z automatu, bo tak jest w dokumentacji. Nie zawsze zdajemy sobie sprawę z tego, o co tak na prawdę chodzi z pewnymi detalami. Jednym z takich detali jest token CSRF, który na pierwszy rzut oka wydaje się uciążliwy. Ale jest ważny, o czym będę pisał dzisiaj.

Tagi: #programowanie, #naukaprogramowania i #programista15k w #php#symfony i trochę #security

Zaloguj się aby komentować

najnowszy post o Chain of Responsibility od @elszczepano zainspirował mnie do napisania recenzji;

TL;DR: chain of responsibility masz jak wykonujesz po sobie rzeczy, np.

1. Zapisz do logów
2. Wyślij metryki
3. Zwróć HTML ze zdjęciem papieża

Bardzo chciałem, żeby moja krytyka była merytoryczna, więc wpisałem dokładnie ten prompt w Chat GPT z prośbą o napisanie przykładu w express.js (ryc. 1)

const express = require('express');
const app = express();

// Middleware 1: Zapisz do logów
app.use((req, res, next) => {
console.log(`Received a request at ${req.url}`);
next(); // Przejście do następnego middleware
});

// Middleware 2: Wyślij metryki
app.use((req, res, next) => {
// Kod wysyłający metryki (przykładowo)
console.log(`Sending metrics for ${req.url}`);
next(); // Przejście do następnego middleware
});

// Middleware 3: Zwróć HTML ze zdjęciem papieża
app.use((req, res) => {
res.send('<html><body><h1>Strona z zdjęciem papieża</h1><img src="url\_do\_zdjecia\_papieża.jpg" alt="Papież"></body></html>');
});

const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});

na koniec chatGPT wyjaśnia nam co zrobił:

W tym kodzie każda funkcja middleware wywołuje next() po wykonaniu swojego zadania, co pozwala na przekazanie kontroli do następnego middleware w łańcuchu. Ostatni middleware nie wywołuje next(), ponieważ kończy proces obsługi żądania, wysyłając odpowiedź HTML.

pytanie: jaki jest sens pisać ten artykuł, zamiast napisać samo tl;dr? Mam nadzieję, że autor nie odbierze mojej recenzji osobiście. Ja nie mam motywacji napisać czegoś "od zera" dlatego póki co komentuję odważniejszych. pozdrawiam

#programowanie #pytanie #naukaprogramowania #lajko <- mój tag o programowaniu
ccbe9ce7-6e29-4925-a214-11229e9286fc
elszczepano

Rozumiem Twój punkt widzenia. Pisząc artykuły na bloga nigdy nie zakładałem, że muszą być unikalne i oryginalne (ale mogą, co niekiedy mi się udaje). Zdaję sobie sprawę że sporo contentu z bloga opisane w wielu innych miejscach (w tym w książce, na której się wzorowałem w recenzowanym wpisie) oraz że mogę uzyskać podobny efekt korzystając z Chatu GPT. Patrząc na możliwości LLM-ów, to równie dobrze bloga mógłbym nie prowadzić wcale.


Pisząc ten konkretny artykuł spełniam swój cel opisania wszystkich znanych mi wzorców projektowych na łamach bloga. Co do samej formy, to czy dało się to napisać krócej to się nie wypowiem. Artykuły staram się pisać bez zbędnego wodolejstwa i w prosty sposób jednak z kompletnym wyczerpaniem tematu. To czy mi to wychodzi czy nie pozostawiam do oceny czytelnikom.


Kończąc ten przydługi wywód, dzięki za feedback

wombatDaiquiri

@elszczepano oki, trzymam kciuki, mam nadzieję że się nie obrazisz za formę osobnego wpisu zamiast komentarza, ale miałem nadzieję więcej osób sprowokować do rozmowy, pozdrawiam xd

elszczepano

@wombatDaiquiri nie obrażę, spokojna głowa. Merytoryczny, fajny thread więc nie ma się o co obrażać

Zaloguj się aby komentować

Mamy tu jakiegoś eksperta od assemblera Z80? Chodzi mi o wstawki assemblerowe w sdcc. Funkcja, która ma skoczyć bezwarunkowo pod adres:
void run(char* address){
__asm
pop HL
jp (HL)
__endasm;
}
Kompiluje się prawidłowo, ale nie działa. Ktoś może mi wytłumaczyć dlaczego? Ja to rozumiem w następujący sposób:
-argument przy wywołaniu funkcji jest wrzucany na stos
-instrukcja "pop HL" ściąga argument ze stosu do rejestru HL
-"jp (HL)" skacze bezwarunkowo pod adres przechowywany w rejestrze HL.
program zachowuje się tak, jakby nic się nie wykonało.
#programowanie #naukaprogramowania #retrocomputing
beetroot

Nie jesteście normalni, wracajcie do piwnicy ;)

ataxbras

@beetroot Najpierw musielibyśmy z niej wyjść

inskpektor

@6502 pod debugerem sprawdź co tam się faktycznie dzieje

6502

@inskpektor Nie ma debuggera

6502

@ataxbras @MostlyRenegade @inskpektor

Problem częściowo rozwiązany - zerknąłem w pośredni kod asemblera generowany przez sdcc. Parametr nie jest przekazywany przez stos, tylko przez rejestr hl, więc samo "jp (HL)" załatwia sprawę. Nadal działa to tylko w przypadku przekazania wskaźnika na funkcję, przy 0x0000 się wiesza. Edit: jednak działa, problem jest chyba przy powtórnej inicjalizacji UARTa bez soft resetu

ataxbras

@6502 Właściwie, jakby tak pomyśleć, to zdjęcie ze stosu jest rzeczywiście zbędne, skoro w jp wołasz HL bezpośrednio. Nie wiem jak miałoby to psuć kompilację, ale widocznie psuło.

Gratulacje, że Ci działa!

Zaloguj się aby komentować