Zdjęcie w tle
Programowanie

Społeczność

Programowanie

1k+

Przez lata skompilowałem sobie listę pytań, z którymi najczęściej spotkałem się na rozmowach kwalifikacyjnych - może komuś się przyda:


  • Czym w ogóle jest Python i jakie ma wady i zalety?

  • Jakie prymitywne typy danych oferuje Python i jakie mają właściwości?

  • Które złożone typy danych są mutowalne i dlaczego jest to przydatne?

  • Jakie znasz różnice pomiędzy Pythonem 2 a 3?

  • Podaj metody formatowania ciągów znaków (stringów) i interpolacji zmiennych

  • Wymień kilka najczęściej używanych modułów z biblioteki standardowej i ich zastosowanie

  • Z jakimi zewnętrznymi modułami lubisz pracować najbardziej?

  • Wyjaśnij wyrażenia listowe (list comprehensions) i podaj ich przykład

  • Jak wykonać kod Pythona asynchronicznie?

  • Podaj przykład obsługi błedów w Pythonie

  • Jak używać menedżera kontekstu (context manager)?

  • Czym jest GIL (Global Interpreter Lock) i jak go obejść?

  • Jeśli klasa dziedziczy z innej klasy ale obie klasy mają tę samą metodę, to metoda z której klasy zostanie użyta? Tip: MRO (Method Resolution Order)

  • Wyjaśnij dekoratory i podaj różnice pomiędzy "@classmethod" i "@staticmethod"

  • Jak funkcja zwana "super()" pomaga w zarządzaniu dziedziczeniem?

  • Jak przyspieszyć wykonywanie kodu Pythona?

  • Jak testujesz swoje programy napisane w Pythonie?


Często są też zadania programistyczne ja na przykład:


  • Wyświetl określone informacje ze strony internetowej użwając Pythona

  • Zaimplementuj Most Recently Used (MRU) w Pythonie bez użycia modułów zewnętrznych

  • Zaimplementuj dowolny algorytm sortowania w Pythonie


Tych zadań programistycznych w internecie jest sporo ale większość firm używa wariacji tych samych kilku pytań - na szczęście poważne firmy odchodzą od takiego sprawdzania wiedzy, bo to jedynie sprawdza czy ktoś jest w stanie nauczyć się kilku rozwiązań na pamięć.

Jakby, ktoś chciałby zacząć się uczyć, to strona Pythona ma świetny tutorial po polsku: https://docs.python.org/pl/3/tutorial/index.html.

Oczywiście o wiele więcej jest materiałów po angielsku - jak na przykład ten całkiem przyjemny godzinny tutorial dla początkujących: https://youtu.be/kqtD5dpn9C8.


#technologia #programowanie #python

ZohanTSW

Ktoś dzisiaj jeszcze pyta o różnice między pythonem 2 a 3?

GetBetterSoon

@koszotorobur Na pythoninstitute.org jest tez zacny kurs.

Zaloguj się aby komentować

Uruchamiam STM32F103C8, a konkretnie EXTI na liniach PA0 ... PA4. Siedzą na tych pinach zwykłe przełączniki typu pushbutton. Rozwikłałem reference manual na tyle, że jedno przerwanie działa, ale inne mimo takiej samej składni przy każdym pinie już nie chcą.


GPIO ustawiam:

GPIOA->CRL &= ~GPIO_CRL_CNF0_0; // floating input to pull-down

GPIOA->CRL |= GPIO_CRL_CNF0_1;

Puszczam zegar do EXTI (w tym procku AFIO):

RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

Zdejmuję maskę z interesujących pinów:

EXTI->IMR |= EXTI_IMR_MR0 | EXTI_IMR_MR1 | EXTI_IMR_MR2 | EXTI_IMR_MR3 | EXTI_IMR_MR4;

Ustawiam reakcję na zbocze narastające:

EXTI->RTSR |= EXTI_RTSR_TR0 | EXTI_RTSR_TR1 | EXTI_RTSR_TR2 | EXTI_RTSR_TR3 | EXTI_RTSR_TR4;

Dodaję priorytety przerwania i uruchamiam przerwania (tu tylko po jednym żeby nie mnożyć):

NVIC_SetPriority(EXTI0_IRQn, 1);

NVIC_EnableIRQ(EXTI0_IRQn);

Przykładowe przerwanie:

__attribute__((section(".after_vectors"))) void EXTI0_IRQHandler()

{

   printf("++ \r\n");

   EXTI->PR |= EXTI_PR_PR0;

}


Co bym nie robił tak działa tylko jedno przerwanie i to z PA2. Wiązać pinów z EXTI niby nie muszę (po resecie akurat się zgrywają), ale robię to dla pewności, nie widzę już gdzie szukać. W komentarzu dla czytelności wrzucam cały kod okrojony do obsługi EXTI.

Co mogę robić źle albo gdzie szukać? Do debugowania mam UART i LEDa ( ͡° ͜ʖ ͡°)


#stm32 #embedded #programowanie #baremetal

macgajster

static void gpio_init(void)

{

   RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN;

   RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;


   // BUT_CANC (PA0)

   GPIOA->CRL &= ~GPIO_CRL_CNF0_0; // floating input to pull-down

   GPIOA->CRL |= GPIO_CRL_CNF0_1;


   // (PA1)

   GPIOA->CRL &= ~GPIO_CRL_CNF1_0; // floating input to pull-down

   GPIOA->CRL |= GPIO_CRL_CNF1_1;


   // (PA2)

   GPIOA->CRL &= ~GPIO_CRL_CNF2_0; // floating input to pull-down

   GPIOA->CRL |= GPIO_CRL_CNF2_1;


   // (PA3)

   GPIOA->CRL &= ~GPIO_CRL_CNF3_0; // floating input to pull-down

   GPIOA->CRL |= GPIO_CRL_CNF3_1;


   // (PA4)

   GPIOA->CRL &= ~GPIO_CRL_CNF4_0; // floating input to pull-down

   GPIOA->CRL |= GPIO_CRL_CNF4_1;

}


static void exti_init(void)

{

   RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

   EXTI->IMR |= EXTI_IMR_MR0 | EXTI_IMR_MR1 | EXTI_IMR_MR2 | EXTI_IMR_MR3 | EXTI_IMR_MR4;

   EXTI->RTSR |= EXTI_RTSR_TR0 | EXTI_RTSR_TR1 | EXTI_RTSR_TR2 | EXTI_RTSR_TR3 | EXTI_RTSR_TR4;


   // connect pin to interrupt

   AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI0_PA;

   AFIO->EXTICR[1] |= AFIO_EXTICR1_EXTI1_PA;

   AFIO->EXTICR[2] |= AFIO_EXTICR1_EXTI2_PA;

   AFIO->EXTICR[3] |= AFIO_EXTICR1_EXTI3_PA;

   AFIO->EXTICR[0] |= AFIO_EXTICR2_EXTI4_PA;


   NVIC_SetPriority(EXTI0_IRQn, 1);

   NVIC_SetPriority(EXTI1_IRQn, 2);

   NVIC_SetPriority(EXTI2_IRQn, 2);

   NVIC_SetPriority(EXTI3_IRQn, 1);

   NVIC_SetPriority(EXTI4_IRQn, 1);

   NVIC_EnableIRQ(EXTI0_IRQn);

   NVIC_EnableIRQ(EXTI1_IRQn);

   NVIC_EnableIRQ(EXTI2_IRQn);

   NVIC_EnableIRQ(EXTI3_IRQn);

   NVIC_EnableIRQ(EXTI4_IRQn);

}


__attribute__((section(".after_vectors"))) void EXTI0_IRQHandler()

{

   EXTI->PR |= EXTI_PR_PR0;

}


__attribute__((section(".after_vectors"))) void EXTI1_IRQHandler()

{

   EXTI->PR |= EXTI_PR_PR1;

}


__attribute__((section(".after_vectors"))) void EXTI2_IRQHandler()

{

   EXTI->PR |= EXTI_PR_PR2;

}


__attribute__((section(".after_vectors"))) void EXTI3_IRQHandler()

{

   EXTI->PR |= EXTI_PR_PR3;

}


__attribute__((section(".after_vectors"))) void EXTI4_IRQHandler()

{

   EXTI->PR |= EXTI_PR_PR4;

}

Mam nadzieję, że formatowanie przetrwa.

Skylark

Nie zeby to cos zmienilo (bo to wszystko sa zera) ale EXTI0...3 sa w AFIO->EXTICR[0] a EXTI4 w AFIO->EXTICR[1].


W ramach debugowania sprobuj wywolac przerwanie programowe ustawiajac bity w rejestrze EXTI->SWIER. To pomoze Ci znalezc czy problem jest po stronie EXTI / NVIC / CPU czy konfiguracji GPIO. Sprawdz tez, prosta petla, czy czytanie pinu GPIO i pokazywanie go na LEDzie dziala dla wszystkich pieciu. Najgorzej jest spedzic wieczor debugujac program jak problem jest sprzetowy.

cec

To kara za obsługę przycisków na przerwaniach ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

ciekawostka - hejto ma tylko 50 stron "najnowszych" - https://www.hejto.pl/najnowsze/strona/50 jak zwiększycie numerek, to będzie wyświetlało stronę 50. To oznacza, że aby zescrapować posty i zrobić z nich customowy feed, muszę je zbierać na żywo co ~2 dni. Inne opcje brzmią dużo bardziej skomplikowanie.


wiadomość najgorsza - nie widzę opcji na zbieranie danych historycznych (szczęśliwie mogę zbierać 'od dzisiaj do nieskończoności' - czyli te dane za jakiś czas mogę mieć i mogę obrabiać)


wiadomość zła - nie mam pojęcia co się dzieje w requestach, zakładam że jakaś frameworkowa magia. tak czy siak, dostęp do api nie wygląda friendly


wiadomość dobra - mogę pobrać po prostu https://www.hejto.pl/najnowsze/strona/50 i zparsować xD


kolejna wiadomość dobra - strona 50 była dwa dni temu, więc nie muszę za bardzo bombardować api xD


#lajko <--- moje próby stworzenia sobie newsfeedu, który nie będzie mnie wkurwiał. postaram się tagować.


#programowanie #starozytniprogramisci #hejto

VonTrupka

@wombatDaiquiri co jest głównym założeniem?

własne "gorące"?

Zaloguj się aby komentować

viollu

@wrazik Po prostu Scruma pcha się tam, gdzie nie powinno i nawet jeżeli stara się go dobrze używać to i tak nie ma sensu w takich przypadkach. To jakby wkrętarką wbijać gwoździa.

wrazik

@viollu co ty gadasz musiałeś złego scruma spróbować nie da się nie lubić mówie ci różne są

otoczenie_sieciowe

Scrum działa najlepiej wtedy kiedy każdy ma wywalone na święte zasady i stosuje co najwyżej jakiś customowy zalążek scruma

globalbus

@otoczenie_sieciowe tzw sradżajl

sebie_juki

@otoczenie_sieciowe @globalbus raczej scrum-but (jak w "we have scrum but we don't do dailies")

e5aar

Z mojego doświadczenia scruma zazwyczaj zabijają 2 rzeczy: budżet (nie nadaje się do niskich budżetów, imho nawet do średnich) - został stworzony by poprawić efektywność produkcji oprogramowania w bogatych korpo, a wciskają go wszędzie. Po drugie to mikrozarzadzanie. Jak na review scrum master/po wie dokładnie co ma zobaczyć, to robicie to zle.

Zaloguj się aby komentować

VonTrupka

@PanGargamel tag można dodać/zmienić/edytować, społeczności już nie

Zaloguj się aby komentować

Siema.

Mam problem... Ogólnie robię sobie apkę w C# Maui na Androida i mam tam osadzoną przeglądarkę za pomocą kontrolki WebView. Ładuje do tej przeglądarki link do playera embbed z cda. I tu jest problem po załadowaniu strony, filmiki się nie uruchamia a w logach informacje że requesty są blokowane przez politykę CORS. Da się to jakoś obejść? Próbowałem dodać jakieś nagłówki (?) do request'ów i dalej nie działa. ಠ_ಠ


#programowanie #csharp #dotnet #maui #android

vinclav

@kiko 

>kontrolka WebView

>c#

>CDA

Nie chcę Cię martwić, ale masz tam DMC.

Ja bym porzucił WebView w zamian za czysty datastream.

kiko

@vinclav Kurde zależy mi trochę żeby to jakoś działało bo kurde część linków w apce przestało mi działać...

vinclav

@kiko no to pakujesz się w cross site scripting, hmm. No nie uciekniesz od natywnej apki. Już widziałem takie akcje z jakimiś sokami na zamówienie. Poważnie lepiej wystaw jakiś protobuf API albo rest albo vnc. Ale to brzmi jak DMC jakieś.

Na szybko, czy jest czas? Bo może wystarczy postawić jakiś streaming. End user się nie zorientuje.

5tgbnhy6

@kiko do przeglądarek desktopowych są wtyczki do pomijania tego CORS checka, bo z tego co rozumiem, to jest zabezpieczenie po stronie przeglądarki. może kod tych wtyczek coś Ci podpowie

kiko

Update jakby ktoś był ciekawy...

Apke zaktualizowałem do net 8. Zauważyłem że do kontrolki WebView dodali możliwość zmiany UesrAgent'a, więc zmieniłem go na desktop'a i zaczęło działać. Zdziwienie.wav

Chyba że coś w samym CDA się zmieniło

Zaloguj się aby komentować

#unrealengine

robię se platformówkę, jak wcześniej wspominałem.

Poszukuję filmików, tutoriali etc. jak zrobić Mario Bros. (te klasyczne) w Unrealu.

Płacę piorunami i uśmiechami.

Z góry serdecznie dziękuję za pomoc!


Pozdrawiam!


PanGargamel

c8fa7e69-d49a-49d4-b8b8-ef80f9cb0d79
MaD

@PanGargamel w sensie, wszystko na ytb pod "ue5 platformer 2d tutorial" już widziałeś i trzeba więcej?

Zaloguj się aby komentować

Widziałem gdzieś wczoraj komunikat "Twoje hasło nie może być podobne do poprzedniego" i zdębiałem. Jak to podobne xD "Nie może być takie samo" - to znam, to rozumiem. Ale jak zmierzyć podobieństwo zahashowanych haseł xD Przecież to jest cały myk funkcji hashującej (oprócz tego że jest jednokierunkowa) że właśnie nawet najmniejsza zmiana inputu może powodować całkowitą zmianę outputu. Wniosek miałem jeden: dzbany przechowują niehashowaną wersję! Może jakoś zaszyfrowaną, może nawet całkiem dobrze, ale jednak odwracalnie. Już myslałem, że to jakiś prank ale popytałem znajomych i wielu spotkało się z podobną praktyką. Już taki zbulwersowany siedziałem, gdy nagle myślę "a może po prostu sprawdzę jak oni to robią xD" i słuchajcie jaki patent prosty a sprytny xD Biorą nowe hasło, i puszczają go przez jakiś tam wektor popularnych zmian, permutacje, i tego typu zabiegi. Dostają szereg "podobnych haseł" które teraz hashują i porównują z hashem zapisanym w bazie xD Jak sie zgadza, to bingo, hasło jest podobne!


[Pominę fakt że strasznie mi sie to zabezpieczenie nie podoba, opisuje tylko jak fajnie jest rozwiązane]


#programowanie #cybersecurity

tmg

Tylko jest pewien problem. Przechowują hashe Twoich poprzednich haseł. Przypuśćmy że ten ich algorytm jest słaby i coś pomija. W razie gdy ukradną im bazę można łamać wszystkie stare hashe. Po złamaniu któregoś z nich można atakować kolejne lepszym algorytmem za pomocą bazowego hasła i jeśli użytkownik miał jakiś schemat to zostaną łatwo złamane.

Barcol

@tmg To prawda. To znaczy ja zakładam że w 2023 roku to już każdy używa nowego bcrypta nawet jak o tym nie wie, bo mu framework sam go wrzuca ¯\_(ツ)_/¯ Ogólnie ja mam takie poczucie że jak pierwszy raz ustawiam gdzieś hasło, to ono automatycznie przestaje być "moje" bo przecież nie wiem co sie z nim dalej dzieje. Dlatego (i z wielu innych powodów) menadżery haseł 100% RiGCz

lokurva

@tmg wg tego co napisał OP to nowe hasło jest porównywane z obecnym hashem. Nie widzę tu trzymania starych haseł, jak walidacja przejdzie to obecne zostanie nadpisane

Macer

@Barcol to jest rak straszny i paranoja. to nie interes strony, jakie mam hasło.

Barcol
  • @Macer Mnie rozwala jak mam dobre hasło wygenerowane przez menadżer, a tu nagle dostaje komunikat "nieprawidłowe hasło" i szukam co im sie nie podoba a tam tak idiotyczne frazy jak "Żaden znak nie może być powtórzony więcej niż 2 razy" (co XD) albo "hasło nie może zaiwerać w sobie podobieństwa do loginu" - no i co to niby kurwa znaczy? W okcie przepuściło mnie dopiero hasło które nie miało żadnej literki z mojego loginu. To jest czysty debilizm
Macer

@Barcol to chyba jest celowo wymyslane zeby stworzyc podstawy pod wprowadzenie tego digital ID. ze to niby takie wygodne bo nie trzeba hasel wymyslac. ale i tak nie trzeba, bo nikt normalny nie lamie hasel pojedynczych uzytkownikow, jesli juz to kradnie bazy albo stosuje phishing.

redve

@Barcol przebij polityke bezpieczeństwa u mnie

hasło nie może być dłuższe niż 12 znaków xDDDD

Tutaj tak wszystko na odpierdol jest, że plain text do haseł jest nie tyle prawdopodobny, co prawie pewny, i jeszcze janusze ustawiły taki śmieszny limit na tym xD

Barcol

@redve Ja mam w banku max 16 ಠ_ಠ To znaczy rozumiem że limit musi być, ale kurde 16 znaków w tych czasach traktowane jako MAKSIMUM to tak średnio poważnie, o 12 nie mówiąc :v

Zuorion

Limit masz jak jest hasło maskowane, ale jak je wyłączysz to powinno dać się dłuższe, chyba, z zapomnieli i mają błąd xd.

Zaloguj się aby komentować

Zaloguj się aby komentować

cec

Ile razy wrzucisz ten sam post? ( ͡° ͜ʖ ͡°)

wrazik

@cec Stwierdziłem że wrzucę na streamable żeby ładny podgląd był. Wiesz, z edycją postów jest jak z update'ami hejto. Na początku spoko, ale po jakimś czasie dupa blada.

Hoszin

ale winampa ktoś tam używa?

Zaloguj się aby komentować

Legitymacja-Szkolna

@def wymyślanie koła na nowo i kolejna próba odcięcia się od js'a

Zaloguj się aby komentować

Jakiś czas temu jak jeszcze się dopiero zaczynałem orientować w programowaniu zawodowym natknąłem się na kilka myśli, spostrzeżeń, które mocno zmieniły moje spojrzenie na pewne rzeczy i podniosły jakość mojej pracy niemal z marszu. Czerpałem głównie z książek, bo jestem książkowym świrem i częściej sięgnę po książkę niż Hindusa na YT, choć zdarza się i tak. A pracę zaczynałem zaraz po technikum w januszeksach więc często nie miałem żadnego mentora w firmie.


No i jedną z tych myśli była klasyfikacja kodu wg złożoności i liczby zależności. Zaprezentował ją Khorikov w książce Unit Testing (dostępna tez po Polsku, Helion).

Idea polega na tym, że kod można ocenić pod względem:

**złożoności lub wagi domenowej** - czyli jak istotny jest kod dla podstawowego celu aplikacji (np algorytm wyznaczania ścieżki do celu w nawigacji) bądź jak bardzo jest on skomplikowany, czyli ile ma rozgałęzień, przypadków skrajnych i tak dalej;

liczby współzależności - czyli ile zawiera odniesień do zależności spoza kontroli bieżącego procesu, które mogą być modyfikowane również przez inne procesy, np połączenie z bazą danych, redisem, jakimś innym serwisem. Khorikov stawia tutaj wyjątek, że jeżeli serwis jest read only to nie traktuje się go jako współzależność ale ja lubię nie stosować się do tego wyjątku.


Jeżeli dwie powyższe miary zaprezentujemy na układzie współrzędnych (rozpatrując dodatnie połowy obu osi, ofc) to możemy podzielić go na cztery ćwiartki, pic rel. Jedna z nich to algorytmy, czyli kod o niskiej czy lepiej zerowej liczbie współzależności, które należy otestować jednostkowo. Idealnie jeśli ich rola sprowadza się do przyjęcia danych i zwrócenia wyniku, bez "efektów ubocznych". Druga to kontrolery, które testuje się integracyjnie. Niska złożoność ale dużo współzależności. Idealnie nie ma tam żadnych ifów, obliczeń, nic. Jedynie koordynacja komunikacji pomiędzy współzależnościami. Kod trywialny to kod o niskiej złożoności i liczbie współzależności (np gettery, settery etc). Nie testuje się go w ogóle bo nie opłaca się. I wreszcie **kod przekomplikowany **(jest takie słowo w języku niepotocznym? xD) to kod który jest i złożony i ma dużo zależności i jest to ten który widzicie w Waszych spagetti w Wordpressie. Ten ostatni typ to kod, który należy zrefaktorować, podzielić na algorytmy i kontrolery i otestować je indywidualnie.


Po lekturze tej książki natychmiast zastosowałem się do tych wskazówek w projektach w pracy i to był game changer. Od tamtej pory kod który piszę jest otestowany, przemyślany i poukładany. W każdym języku w którym miałem okazję napisać coś więcej ta porada znalazła zastosowanie. Jak ktoś dopiero zaczyna karierę albo dalej ma problem z pisaniem testowalnego kodu to polecam całym sercem.


PS to nie reklama, po prostu jakbym miał zaczynać jeszcze raz to sam bym chciał żeby ktoś mi polecił takie inspirujące rzeczy wcześniej niż odkryłem je sam.

2428e4ee-a8a5-4a2e-990c-f2ecac28b4b2
GazelkaFarelka

@Kshaq Największą zaletą pisania testów jednostkowych jest nakazanie ich pisania programistom do ich własnego chujowego kodu. Jeżeli pisanie testow do tego co wysrałeś to droga przez mękę i zajmie ci pół dnia, to powinno ci dać do myślenia.

kobiaszu

@Kshaq Szczerze to totalnie nie zawracam sobie tym głowy od kiedy pisze w podejściu "Design by Contract" I używam weryfikacji formalnej

Voltage

@Kshaq to co opisałeś brzmi jak osobna, "własna" interpretacja architektury warstwowej czy heksagonalnej przy DDD. Dodatkowo, jeśli musiałeś odkryć podobne podziały sam to najwidoczniej zawiedli koledzy albo po prostu firmy w których było Ci dane na początku pracować, ale to nic nowego, sam też niestety przechodziłem podobną ścieżkę.


Z perspektywy doświadczonego deva powiem tylko tyle, że takowe interpretacje własne i książki niesamowicie burzą spójność w świecie IT i po prostu ciężko się przez nie dogadać. Stosowanie różnych praktyk, pojęć, później czasem wychodzi nadmierne tłumaczenie przy CRkach albo po prostu przez różnice w nazywaniu tych samych rzeczy (bo każdy przeczytał inną książkę) wychodzą jakieś dziwne koncepcje.

Kshaq

@Voltage 

Wiadomo, boli jak zmieniasz pracę, projekt, klienta i musisz przerzucać się na inny "framework" ale nie uważam żeby to był rozwiązywalny problem. Różne koncepcje są przyjmowane w różny sposób w zależności od potrzeb. Takie DDD na przykład, czasami jest przyjmowane w całości, czasami częściowo, czasami wcale. Podobnie hexagonal, onion, CA. Każdy projekt to okazja do poszerzenia horyzontów, a każda nowa koncepcja którą ktoś przynosi to okazja do dyskusji, z której albo nie wyniknie nic albo wyłoni się potencjalnie lepsze rozwiązanie, a zbiór doświadczeń co działa i co nie to korzyść dla ciebie, bo będziesz znał wady i zalety podejść w przyszłości. Nie trzeba od razu implementować każdego nowego pomysłu a w mnogości języków, technologii, paradygmatów i zwykłych trendów zawsze ktoś będzie miał coś ciekawego do powiedzenia. To tyle jeżeli chodzi o świat IT, ale brak spójności w firmie, dziale czy nawet zespole to już inny temat.


A co do tego o czym pisałem: to nie jest "własna interpretacja" czy alternatywa dla żadnego gotowego "frameworka" tak jak nie jest nią np. dependency inversion, ocp albo coupling i kohezja. To jest obserwacja, uogólnienie jakiejś koncepcji, problemu i propozycja jego rozwiązania. Warto umieć nazwać i opisać elementarne problemy jakie rozwiązują różne "gotowe" architektury jak ten hexagonal czy onion, bo nie zawsze masz możliwość ich wprowadzenia, choćby kiedy masz za zadanie robić refactor jakiegoś śmietnika. A kiedy junior pyta dlaczego robisz to tak a nie inaczej, to dobrze jest umieć zaargumentować inaczej niż "bo tak jest w ddd".

Voltage

@Kshaq Nie mówię że nie masz racji, chodzi mi po prostu o wspólny język w branży który przez takie redefiniowanie oczywistości stanowi często problem. Weźmy taki DDD (skoro już przy nim jesteśmy), którego podstawą jest ustalenie wspólnego języka, nie tylko wśród devów ale też na połączeniu dev-biznes. Im lepiej się rozumiemy tym szybciej, i bardziej bezproblemowo zaimplementujemy odpowiednie rozwiązania na akceptowalnym poziomie, i tym mniej długu narobimy. W Twoim przykładzie (a może po prostu źle go opisałeś?) wyodrębniasz "kod trywialny" którym opisujesz property oraz warstwę algorytmów jako szeroko pojętą domenę, a przecież np. w DDD modele i property mają swoje miejsce właśnie w warstwie domenowej. Tak, znajdują się w niej również serwisy domenowe, jednak tutaj już jest jakaś nieścisłość. Stąd moja opinia - im więcej ludzi pisze książki/blogi i miesza w nich pojęcia tym gorzej dla innych którzy to czytają i czasem łapią mindfucka konfrontując z innymi.


Oczywiście z większością tez mogę się zgodzić, piję jedynie do tego jednego problemu.

Zaloguj się aby komentować

#android #pytanie #pytaniedoeksperta #programista15k

#programowanie

Czy google robiło jakiś szacher macher we frameworkach na androidzie?

* gmail wymaga teraz 500mb wolnego miejsca żeby załącznik zobaczyć/pobrać

* podobnie klient #nowywykop kiedy wolne miejsce spada poniżej 500mb pobrane pliki mają rozmiar 0.

* ale już np. Hejto, Reddit, Twitter czy Chrome działają normalnie pozwalając dobić do deski przy pobieraniu plików

PanGargamel

@figa-rybka na pewno masz fon czysty?

figa-rybka

@PanGargamel Raczej mnie Mariusz Pegazusem nie szpieguje

wonsz

@figa-rybka ale tam teraz jakiś agent w centrali kiśnie

Zaloguj się aby komentować

PanGargamel

Ja nie mam tych zmiennych na ekranie

LoneRanger

@PanGargamel ten screen jest twój czy z filmiku?

Jeśli brakuje ci tego że screena, to na ekranie edycji widgetu, zaznaczasz button i na górze panelu po prawej będzie ptaszek do odhaczenia "is variable" albo coś w podobie.

PanGargamel

@LoneRanger aż uruchamiam ue

Zaloguj się aby komentować

Zaloguj się aby komentować

Suodka_Monia

@PanGargamel zrób w unity

PanGargamel

@Suodka_Monia żadna porada

Zaloguj się aby komentować

Jak w CV wpisać że było się "eksternalsem"? Normalnie wpisuje że robiłem projekt w rubrykę firmy macierzystej, czy robię osobną rubrykę dla firmy zewnętrznej i tam wpisuje że byłem pracownikiem zewnętrznym?

#programowanie #praca #informatyka

Meverth

@Badass ja zawsze wpisuje "firma Januszex, kontraktor dla ...", ale ja jestem dziwny.

Zaloguj się aby komentować

Zaloguj się aby komentować