• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[CR] JavaScript (#5): Poznajemy jQuery. Gra w pamięć

VPS Starter Arubacloud
+11 głosów
15,264 wizyt
pytanie zadane 20 września 2017 w Nasze poradniki przez Mirosław Zelent Nałogowiec (34,750 p.)

CR = Code Review. O co chodzi? Zajrzyj tutaj
Pełna lista wszystkich Code Review? Zajrzyj tutaj

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

Paczka z plikami z odcinka do pobrania: TUTAJ

komentarz 31 grudnia 2017 przez Farmer Obywatel (1,150 p.)
o co chodzi z tym "błędem krytycznym"?

Bo coś mi chyba umknęło

16 odpowiedzi

+18 głosów
odpowiedź 22 września 2017 przez Ehlert Ekspert (212,630 p.)

W związku z kolejną dyskusją z cyklu best practises vs dydaktyka mam do Pana pytanie. Nie brał Pan nigdy pod uwagę możliwości tworzenia filmów na kanale Pasja Informatyki współpracując z osobami, które zawsze zabierają głos i robią refactoring kodu z filmów?

Nie chcę ujmować Pańskiej wiedzy, ale co odcinek jest coraz głośniej. Mimo świetnych zdolności dydaktycznych jakie Pan prezentuje poprzez kursy, nieczysty kod i złe nawyki (mimo, że to tylko materiał do nauki) znacząco obniżają jakość przekazywanego contentu i owocuje masą zapytań na forum o banalne rzeczy (czekamy na falę jQuery).

Proszę wziąć pod uwagę, że użytkownicy, którzy poddają Pański kod krytyce, to ludzie bardzo pomocni, o czym przekonał się nie jeden forumowicz. Osobiście uważam, że połączenie ich wiedzy i doświadczenia z pańską praktyką nauczycielską znacząco polepszyłoby jakość kursów webdevu na kanale. 

Pozdrawiam
Oczywiście jest to tylko moje skromne zdanie i osobista sugestia. wink

5
komentarz 23 września 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Proszę o nie spamowanie wątku odpowiedziami niezwiązanymi z review kodu JS (istnieją komentarze) - ten wątek nie służy tylko kilku osobom, ale przede wszystkim ludziom chcącym się uczyć poprzez refaktoryzację kodu. Jeśli ktoś ma do mnie pytania to proszę kierować je na priv lub maila - odpowiedzi nie na temat będą ukrywane w trosce o nie zalanie wątku offtopem.

Co do pytania - osobiście nie spotkałem się jeszcze z chęcią pomocy mnie - doświadczałem raczej krytyki (pozycjonowanej bezpośrednio na moje nazwisko w tytułach wątków czy wpisów na różnych blogach, grupach facebookowych, wykopie). Za pierwszym razem, w wątku "Co jest nie tak z najnowszym odcinkiem kursu Mirosława Zelenta" cierpliwe wyjaśnienie mojego podejścia do dydaktyki nie pomogło - kilka osób i tak odczytało moje słowa jako postawę kogoś kto uważa się za nieomylnego, po czym obraziło się na mnie zapowiadając odejście z forum. Tego typu reakcje dziwiły mnie wówczas, bo pierwszy raz z czymś takim miałem do czynienia - szczerze mówiąc, to uważałem nawet takie zachowanie za nieco dziecinne - można przecież mieć inną wizję czegoś ale nie reagować emocjonalnie. Przeczytałem jednak wątek drugi raz i zrozumiałem że każdy reaguje po swojemu, inaczej mnie postrzega, w grę wchodzi też zawsze ego. Jednak intencje ludzi były czyste i to mi się podobało. Zrozumiałem także wówczas, iż youtuber nie może prowadzić forum - generuje swoją osobą za dużo atencji. Na szczęście Arek Waluk posiadał obiektywne, zdystansowane podejście - chciał wysłuchać - w rozmowie prywatnej wyjaśniliśmy dokładnie co zaszło i wtedy wiedziałem już, że ta jego cierpliwość i bezstronność czyni go idealną wręcz osobą na Opiekuna forum i moda całego Community. Arek mimo obaw o Wasze reakcje zgodził się przyjąć tę funkcję i przejął z powodzeniem dalsze prowadzenie tego miejsca.

W tym wątku z kolei przypisano mi cechy kogoś kto bardzo łatwo się obraża, również nie zakładając istnienia dobrej woli z mojej strony. Niestety - paradoksalnie - sukces kanału Pasja informatyki sprawił, że na forum nie mogę się już komfortowo udzielać. Zbyt często wyciągane są fragmenty moich wypowiedzi i na podstawie wybranej frazy / zdania jestem nieustannie oceniany - ginie sedno i przekaz moich słów. Cokolwiek wyjaśnię na temat swojego podejścia do dydaktyki nie ma znaczenia - nie widać woli wysłuchania mnie, empatycznego zrozumienia mojego punktu widzenia, jest etykieta. Nawet te słowa zapewne zostaną rozczłonkowane i zanegowane, a mnie zostanie przypisany szereg cech / zachowań. Tak to niestety często wygląda w sieci, jak mówię - przyzwyczaiłem się i uważam internetowe dyskusje za jałowe.

Chęci pomocy doświadczyłem i doświadczam regularnie od Arka, który nie zakłada a priori moich złych intencji, ani nie widzi mnie już na starcie jako osoby zarozumiałej (i może liczyć na to samo z mojej strony - to kwestia zaufania i wzajemnego szacunku - postawa współpracy). Kiedy do siebie piszemy, to dominują konkrety i nikt nikogo nie ocenia - szkoda na to czasu, lepiej budować i pomagać sobie. Dlatego współpraca układa się świetnie i wiele fajnych funkcjonalności czy konkursów udało się zrealizować z jego inicjatywy i przy mojej skromnej pomocy - wartość buduje się tymże właśnie pozytywnym realizowaniem inicjatywy. Kiedyś też Szymon chciał pomóc przy filmie nt. forum, ale chyba zabrakło mu czasu na dokończenie tego.

Jeżeli ktoś ma dla mnie propozycję współpracy, to zapraszam prywatnie do kontaktu na maila. Nie wiem, czy kiedykolwiek będę mógł wrócić więcej poudzielać się na forum i zbudować coś fajnego z ludźmi - w obecnym klimacie wydaje się to niestety niemożliwe. Mam nadzieję, że to może kiedyś się zmieni, ale też nie widzę w tym wielkiego problemu. Jak wspominałem - nie traktuję tego emocjonalnie, rozumiem też z czego często ta czy inna ocena wynika - intencje osób są czyste. Nie mam też potrzeby bycia akceptowanym przez wszystkich - szczerze mówiąc to czyjaś opinia na mój temat często mało ma wspólnego ze mną, a więcej z tym jak ktoś mnie postrzega.

Forum istnieje nie dla mnie, a dla wielu początkujących osób, które pierwszy kontakt z jakimkolwiek programowaniem mają na kanale, a potem tutaj z Wami. Ja sam jako jeden człowiek nie jestem w stanie przygotować po 15 odcinków w każdej serii webowej, a jedynie kilka na sezon. Jednak naukę przez ewolucję rozwiązań zawsze uważałem i uważam za najskuteczniejszą (zabójczo najskuteczniejszą, not even kidding). Widzę świetną robotę, którą wykonujecie w postach i za to Was podziwiam (najbardziej niesamowitą pracę wykonuje Comandeer). Code Reviews pokazują też jak kod może wyglądać, gdyby to był odcinek 15 serii, a nie 2 czy 4 - dlatego są tak cenne i dlatego je promuję w odcinkach. Dziękuję wszystkim za cały trud włożony w ich przygotowanie! Pozdrawiam
9
komentarz 23 września 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

Miałem szczerze mówiąc się w tym wątku nie udzielać, aby tylko nie dokładać więcej czytania bez konkretnego powodu, ale skoro już zostałem wywołany to też napiszę coś od siebie.

Chęci pomocy doświadczyłem i doświadczam regularnie od Arka, który nie zakłada a priori moich złych intencji, ani nie widzi mnie już na starcie jako osoby zarozumiałej (i może liczyć na to samo z mojej strony - to kwestia zaufania i wzajemnego szacunku - postawa współpracy). Kiedy do siebie piszemy, to dominują konkrety i nikt nikogo nie ocenia - szkoda na to czasu, lepiej budować i pomagać sobie.

To oczywiste, obydwojgu nam jako adminom zależy przecież na jak najlepszym powodzeniu tego miejsca. W momencie gdy piszę do Ciebie np. z pytaniem technicznym, to nie będę zawracał Ci głowy tym, co bym zmienił w kursie, bo nie w tym rzecz. Szkoda czasu na poboczne uwagi, gdy jest konkretna rzecz do załatwienia.

Dlatego współpraca układa się świetnie i wiele fajnych funkcjonalności czy konkursów udało się zrealizować z jego inicjatywy i przy mojej skromnej pomocy - wartość buduje się tymże właśnie pozytywnym realizowaniem inicjatywy. Kiedyś też Szymon chciał pomóc przy filmie nt. forum, ale chyba zabrakło mu czasu na dokończenie tego.

Tutaj dodałbym całą administrację :) Moderatorów, redaktorów i ekspertów. Zawsze są pomocni, zawsze mogę liczyć na pomoc i wsparcie kogo tylko nie poproszę. Więc nie wszystko jest moją zasługą; gdyby nie ich pomoc sam bym nic tu nie zrobił.

 Jednak naukę przez ewolucję rozwiązań zawsze uważałem i uważam za najskuteczniejszą (zabójczo najskuteczniejszą, not even kidding). Widzę świetną robotę, którą wykonujecie w postach i za to Was podziwiam (najbardziej niesamowitą pracę wykonuje Comandeer). Code Reviews pokazują też jak kod może wyglądać, gdyby to był odcinek 15 serii, a nie 2 czy 4 - dlatego są tak cenne i dlatego je promuję w odcinkach.

Mirosławie, naprawdę rozumiem co chcesz osiągnąć i jak ty to widzisz. Taki pomysł jest niezły i brzmi fajnie, ale on się po prostu w praktyce nie sprawdza, nie działa. Już tłumaczę dlaczego. Ludzie nie czekają na kolejne odcinki Twojego kursu, bo ich jeszcze nie ma i pewnie pojawią się za jakiś czas. A nawet gdyby były, to nie wiadomo czy każdy dotrwałby do końca kursu. I tym sposobem gdy ktoś widzi, że w kodzie HTML należy używać tylko divów i nie ma ani słowa o znacznikach z HTML5 to on już idzie robić stronkę na samych divach. On nie sprawdzi sam w sieci czy na pewno tak powinna wyglądać, czy te praktyki są aktualnie dobre. On zobaczy, że tu było tak pokazane, to działa i jest fajnie, więc nie interesuje się tym dalej. I potem przychodzi do oceny np. na nasze forum, albo dowolne inne miejsce, gdzie jest zalewany odpowiedziami w stylu "po kursie MZ do poprawy to samo co zawsze". I zawsze jest to podobna lista. Tak, jest początkującym i może robić nawet głupie błędy. Ale on po prostu robi rzeczy, których już się robić nie powinno. Rozumiesz problem? Idea może i jest dobra, fajnie byłoby uczyć ludzi krok po kroku, od najstarszych rzeczy wprowadzając nowe. Ale ludzie tego nie widzą i nie rozumieją (w większości, nie chciałbym nikogo obrazić). Może więc warto byłoby w jakiś sposób zmienić tę ideę? Taki problem jest poniekąd we wszystkich kursach, nie tylko w Twoim. Pełno jest przecież osób, które nadal używają starego mysql_* w PHP, pomimo że jest już od PHP 7 usunięte. Tyle że te nawyki idą ze starych kursów - ludzie otwierają kurs/książkę z np. 2006 roku i się z niego uczą. Trudno się mówi, starych książek nie wytępimy inaczej niż przez ciągłe odradzanie. A Twój kurs jest stosunkowo nowy i popularny, dopiero się tworzy, dlatego nie ma sensu, aby bazował na złych praktykach. Tak, rozumiem, że ma dążyć docelowo do tych dobrych. Ale nim do nich dojdzie, to masa osób już załapie szkodliwe nawyki i nie doczeka dalszej części, gdzie będą pokazane te naprawdę dobre. Niektórym wydaje się nawet, że po Twoim kursie mogą iść prosto do pracy, pierwszy przykład z brzegu: https://forum.pasja-informatyki.pl/92608/kursie-pana-miroslawa-zelenta-sie-szanse-dostac-staz-praktyki-prace-jakiejs-firmie A sam na pewno wiesz, że tak nie jest - programowanie wymaga ciągłego rozwoju, poznawania nowych rzeczy, a nie odbębnienia jednego kursu składającego się z kilku odcinków i poczuciu "ja już wszystko umiem".

To samo z już słynnymi @ w kursie PHP, o tym z resztą już kiedyś gdzieś Ci pisałem - chyba nawet na priv. Fajnie że w odcinku następnym po ich pokazaniu powiedziałeś, aby ich nie używać. To dobrze. Tylko co z tego, skoro ludzie w odcinku wcześniej zobaczyli że są i mają być. Nie wysłuchali już dalej, że ma ich nie być, albo że można zrobić to lepiej. Działa to działa. Dlatego, sumując to, lepiej byłoby gdyby w ogóle nie były pokazane - @ nie są do niczego potrzebne i są złą praktyką, lepiej aby nikt o nich nie usłyszał skoro nie musiał. Widzisz ten problem? Ośmieliłbym się nawet powiedzieć, że to nie jest Twoja wina. Założenie takiej nauki mogło być dobre: pokażemy ludziom coś starszego, później coś nowszego, a na koniec zrobimy świetny kod. Ale się po prostu nie sprawdza. Nie działa. Ludzie działają tak, że coś zobaczą i idą z tym od razu w świat. Zobaczą, że strona na samych divach działa i można ją tak zrobić, to myślą, że dużo umieją i dalej nie szukają sami.

Jeżeli ktoś ma dla mnie propozycję współpracy, to zapraszam prywatnie do kontaktu na maila. 

Ja mam dla Ciebie propozycję, nawet publicznie. Jak rozumiem przed nagrywaniem odcinka kursu przygotowujesz sobie materiał o czym będziesz to robił. I jak się domyślam piszesz najpierw sobie kod, który potem rozpisujesz od nowa na odcinku? Podeślij mi ten kod dwa/trzy dni wcześniej przed nagraniem. Jeśli tylko wyrazisz zgodę ja roześlę go dalej - do osób, które znają się na danej dziedzinie, a mamy na forum takich sporo. Mogę do konkretnej umówionej, mogę do wielu, które mogłyby przekazać uwagi. Nie ma problemu. W zamian otrzymasz uwagi z poprawionym kodem albo tylko z naszymi sugestiami i uwagami. Jeśli tyle to za mało, możemy umawiać się na spotkania. Np. na wydzielonym kanale na IRCu, albo rozmowy na Skype, TeamSepaku. Tak, aby w miarę szybko omówić co jest do omówienia. Osobiście podejmuję się nadzoru nad czymś takim, dogadam wszystko i pomogę, nie ma problemu. Odcinki - bądźmy szczerzy - pojawia się dość rzadko, więc myślę, że nikt nie będzie miał problemu ze znalezieniem chwili raz na jakiś czas. Świadomi jesteśmy tego, że nie od razu należy pisać zaawansowany kod, bo początkujący go nie zrozumieją. Jeśli więc np. podeślesz nam kod strukturalny, to nie dostaniesz w odpowiedzi na pewno wielkiej obiektowej aplikacji na frameworku, bo to nie miałoby sensu.

Jeśli jeszcze bardziej chciałbyś się zaangażować w taką formę możesz kilka dni wcześniej upublicznić kod kursu na forum lub wrzucić na GitHuba i podesłać innym do oceny. Tak, to nakłada na Ciebie sporo dodatkowej pracy, bo musisz każdą zmianę przejrzeć, ewentualnie odpisać czy podyskutować. Ale i tu możemy pomóc. Jeśli chcesz mogę się zadeklarować do nadzoru nad takimi repozytoriami. Ty wrzucałbyś kod, ja z jakąś asystą czuwalibyśmy nad porządkiem i uwagami do niego. Ale to może być za dużo i w ogóle, dlatego na dobry początek propozycja jak powyżej: podeślij to mi lub do kilku zaufanych osób, zaoszczędzisz czas i będziesz miał pewność, że to co wraca ma sens. Przy publicznym udostępnianiu wcześniej istniałoby też ryzyko, że ktoś może zacząć uczyć się z tego kodu, zanim obejrzy odcinek za kilka dni. Ale to byłyby pewnie pojedyncze przypadki, a docelowo wychodziłby dobrze przygotowany odcinek, więc suma zysków byłaby znacznie większa w mojej ocenie.

Oczywiście takie coś będzie miało sens tylko jeśli nasze uwagi będą włączane do kursów. Nie mówię, że każde słowo, ale jeśli np. zwrócimy uwagę na tak podstawową rzecz jak nazewnictwo w kodzie po angielsku, a w kursie dalej będzie to robione bez konkretnego powodu po polsku (tak przynajmniej było jeszcze w ostatnim kursie PHP który pamiętam, a to po prostu zła praktyka którą trzeba ucinać), no to mija się nasza pomoc z celem i szkoda poświęcać czas na gadanie. To dalej mają być Twoje kursy. Nie chcemy ani podważać Twojego autorytetu wśród widzów, ani "przejmować" kanału, ani nic z tych rzeczy. Chcielibyśmy po prostu zrecenzować wcześniej materiał, tyle. Wymagałoby to pewnie też lekkiej zmiany podejścia u Ciebie. Jak tłumaczyłem wyżej: idea z pokazaniem rzeczy starszych/gorszych i zmiana/poprawienie tego za jakiś czas nie działają, większość ludzi zostaje przy tym gorszym co już zobaczyli. Bo nie wiedzą że jest nowsze, nie wiedzą że tak trzeba teraz zrobić, albo działa im gorsze i po co mają coś tam zmieniać? Jestem przekonany, że nie muszę Ci tego tłumaczyć, przecież sam uczysz nie od dziś, więc widzisz jak ludzie reagują. Ale ten problem jest bardzo duży i moim zdaniem należałoby coś tu zmienić, tak, aby wbić ludziom do głowy to, co dobre.

Myślę, że nikt z recenzujących nie będzie oczekiwał od Ciebie nic. Pieniędzy, podpisania, podziękowań. Ja osobiście niczego nie chcę, wystarczy mi to, że mógłbym wpłynąć na format kursu swoimi uwagami i uczynić kurs, a zarazem bardzo małym kroczkiem całą sieć i branżę, lepszą. A dla Ciebie byłaby to okazja do lepszego zintegrowania się ze społecznością, zapewne też jakieś doświadczenia (jak to zawsze w momencie kontaktu wielu programistów), czy nawet powiedzenia w kursie czegoś w stylu "kod był sprawdzony przez kilka osób, wszyscy uważają że jest spoko" - oczywiście jeśli byś chciał, zawsze to jakiś sygnał dla oglądających. 

Pamiętasz moment publicznego udostępnienia kodu forum na GitHubie? Też się o to bałeś, jak widać niepotrzebnie, bo to tylko "dodało skrzydeł". Może nie ma natłoku osób chcących wprowadzić poprawki, przyznaję, ale zawsze każdy może coś zmienić. Gdybym miał sam zrobić tyle ile poprawiliśmy razem, to nie wiem ile by to potrwało, na pewno masę czasu. Nie znam się na każdej dziedzinie, mogę nie wiedzieć pewnych rzeczy, nie mieć czasu. A tak możemy sobie razem pomóc. Jak widzisz nic złego się nie dzieje, nasz pomysł się sprawdził. Może tak byłoby z pomysłem opisanym akapity wyżej?

 

Strasznie długi post mi wyszedł, wybaczcie. Ale ten "problem" jest już od dłuższego czasu i narasta, myślę że czas coś zadziałać. Nie chcę absolutnie podważać tutaj Twojego zdania i w ogóle. Wielokrotnie mówiłem i na priv i publicznie, że cenię Twoje podejście do nauki. Masz coś moim zdaniem wyjątkowego co przyciąga ludzi. Wiele osób zaraziłeś programowaniem i to bardzo fajnie. Ja jestem Ci wdzięczny za to forum - spotkałem tu masę fajnych ludzi, którzy też naprowadzili mnie na dobrą drogę w programowaniu. W samym kursie tłumaczysz dobrze (choć jak dla mnie odcinki są za długie, ale to drobiazg). Fajnie mówisz, nie nudzisz, tylko jakość wiedzy jest średnia. Dlatego ta propozycja. Dla Ciebie Mirosławie byłaby to z godzinka czasu na przeczytanie/omówienie z nami uwag i zrobienie poprawek. A mogłoby to oznaczać lepszy kod. Jeśli szczegóły chcesz omówić na priv to zapraszam - pisz na PW forum, maila, Facebooka, kiedy chcesz. Jeśli nie - trudno, nie obrażę się. Napisz po prostu szczerze i wprost, jak gdy mailujemy, że nie jesteś zainteresowany, albo że pomysł jest zły. Nic to dla mnie nie zmienia i dalej będę Cię tak samo szanował za to co robisz, ale przynajmniej będę miał czyste sumienie, bo próbowałem.

Mam nadzieję, że dobrze wszystko opisałem i dobrze odbierzesz tę propozycję. Moje intencje, jak mam nadzieję wiesz, nie są w żaden sposób złe - nigdy nie były i nie będą ;)

2
komentarz 23 września 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Oczywiście, jeśli możliwość i taka chęć pomocy w Tobie istnieje, to na pewno z niej skorzystam i spróbujemy znaleźć jakiś kompromis mieszając oba style i starając się wyrafinować najlepsze cechy obu podejść w konkretnych kodach przygotowanych na potrzeby lekcji. Czasem będzie to łatwiejsze, czasem pewnie trudniejsze. Najbliższa okazja będzie przy PHP#5 (w którym będzie PDO), ale to już omówimy na spokojnie na privie - aktualnie pracuję slight-edge'owo nad podcastem filozoficznym - chcę odpocząć mentalnie po 1.5h tutorialu. Nie widzę też problemu żeby przygotować planszę pod koniec filmu z wymienieniem osób, które w ramach pasji programowania poświęciły swój cenny czas na pomoc / dyskusję nad kodem.

Co do tego co napisałeś o "nie działaniu metody", to jak mówię mamy inne podejście, doświadczenia - i wałkowaliśmy to już niejednokrotnie. Oczywiście że młodzi ludzie bywają roszczeniowi i leniwi - każdy z nas widzi to z perspektywy czasu, ba sami tacy byliśmy po prostu przez młodzieńczą głupotę. W mojej opinii etap "czy jak to obejrzę to mogę już pracować" jest tylko przejściowy i ewidentnie naiwny. Kto pokochał programowanie i tę "rozkminę", ten nieustannie będzie się rozwijać bo "swędzi" go ta część umysłu, którą używamy do optymalizacji. Ponadto przeniesienie programowania do mainstreamu YouTube'a zawsze powoduje pojawienie się wielu "casuali" - osób które posmakują, ale na dłuższą metę nie zostaną przy tym zajęciu (bo jak wiemy wymaga nastawienia na ciągły rozwój) - jest to problem każdego kursu, tutoriala, forum - najbardziej widać to zresztą na stack overflow :) Ale to też myślę jest dobre, bo ucząc się konstrukcji językowych takie osoby rozwijają logiczne myślenie i cierpliwość. Może nie będą pracować w branży, ale to zaprocentuje po prostu w ich życiu. Uważam na przykład, iż dzieci powinny (oczywiście w formie obrazowej) mieć co nieco doświadczeń z programowaniem od najmłodszych lat.

Osobiście dostrzegam olbrzymią różnicę w ciekawości / jakości dyskusji z osobą taką jak ty Arku, gdzie nie muszę stale borykać się z przypisywaniem mi cech / zachowań i zarzucaniem różnych pretensji (nikogo nie obrażając, mówię po prostu o "mięsie" dyskusji). Ciągła potrzeba tłumaczenia się z czegoś po prostu zabija rozmowę robiąc z niej coś w rodzaju przepychanki / dramy - dlatego takich wymian unikam - są jałowe. Co innego rzeczowa wymiana pozbawiona niepotrzebnych emocji - mam nadzieję, że to daje się zrozumieć. Dziękuję Ci za wszystkie inicjatywy - to właśnie to miałem na myśli mówiąc o pozytywnej realizacji tego co zaplanowałeś na forum, jak również w swoim kursie phpdevs. Osobiście taką postawę lubię bardziej niż krytycyzm, bo przynosi więcej dobrych owoców. To chyba polskie przysłowie mówi że zgoda buduje, niezgoda rujnuje. Pozdrawiam
3
komentarz 23 września 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

Tak, bardzo chętnie wypowiem się na temat jakiegoś kodu jeśli tylko będzie możliwość. Możesz śmiało do mnie pisać, gdy znajdę wolną chwilę odpiszę. I jak mówiłem nikt nie chce Cię poganiać, zmieniać planów, wpływać na kanał. Jeśli teraz nagrywasz jakiś podcast filozoficzny to okej, fajnie, nam nic do tego. Chciałbym tylko, aby inni, którzy regularnie na co dzień zmierzają się z osobami po Twoich kursach m.in. tu na forum i mają jakieś doświadczenia, mogli dorzucić jakieś poprawki w kodzie, aby stał on się lepszy. Plansza pod koniec filmu nie byłaby dla mnie potrzebna - wystarczy mi satysfakcja, że udało się przy moim choćby najmniejszym udziale poprawić coś w materiale do nauki innych. Jeśli bardzo będziesz chciał to nie mam nic przeciwko, ale to już możemy dogadać bliżej.

Zobaczymy jak wyjdzie to przy tym najbliższym PHP, ale docelowo zadowalające byłoby, aby inne osoby mogły wypowiedzieć swoje zdanie. Jak pisałem, jeśli nie publicznie (bo to mogłoby spowodować duży napływ dobrych i mniej dobrych sugestii od różnych osób) to przynajmniej do kilku zaufanych osób. Mogę tym zarządzać i nad tym czuwać, już się deklarowałem. Chodzi o to że ja nie znam każdej dziedziny, a nawet w tej której się znam, mogę się w czymś mylić. Po to mogłaby to być grupka zaufanych osób. Ale jak mówię, krok po kroku, mogę na razie spróbować sam jeśli masz taką ochotę, i zobaczymy co dalej. Może spodoba się Tobie taka forma współpracy. Nie chciałbym nijak naciskać bo to nie o to chodzi, musisz sam wyrazić taką chęć :)

Co do tego co napisałeś o "nie działaniu metody", to jak mówię mamy inne podejście, doświadczenia - i wałkowaliśmy to już niejednokrotnie. 

Widzisz, ja nie kwestionuję Twojego doświadczenia. Ja po prostu widzę, że przez tyle czasu ile tu jestem powtarzają się ciągle problemy z Twoich kursów np. przy ocenie stron. Mało kto po obejrzeniu kursu idzie szukać dalszej wiedzy. Przeważnie ludzie po prostu robią strony i myślą, że umieją dobrze bo przerobili dwa czy trzy odcinki Twojego kursu i to działa. Jak też mówiłem wyżej: to niekoniecznie jest Twoja wina. Tak po prostu działają ludzie. Tylko skoro wszyscy razem to widzimy od dłuższego czasu, to warto może coś zmienić w kursie, aby dostosować to pod ludzi. I pokazywać im od razu to, co jest względnie właściwe, co mogą zapamiętać i stosować. W swoim kursie też staram się to robić i mam nadzieję, że się udaje.

W mojej opinii etap "czy jak to obejrzę to mogę już pracować" jest tylko przejściowy i ewidentnie naiwny.

Zgodzę się, jest naiwny. Z pewnością jest też przejściowy, bo gdy spróbuje podejść do jakiejś rozmowy o pracę lub zapyta o to publicznie, zostanie szybko "ustawiony do pionu", gdziekolwiek by to nie było ;)

Także cieszę się, że jest chęć takiej współpracy z Twojej strony. Oby finalnie wyszło z tego coś dobrego, bo na tym najbardziej mi zależy. Pozdrawiam, nie zabieram więcej czasu i życzę Ci miłego weekendu.

7
komentarz 23 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie chcę się niepotrzebnie wtrącać w dyskusję, ale moim zdaniem dyskusja w gronie zaufanych osób (które są obeznane z daną technologią i pracują w niej na co dzień) nad omawianymi treściami, czy kodem to bardzo dobry pomysł. Tak samo, świetnym pomysłem było upublicznienie kodu źródłowego forum w repozytorium na GitHubie. Chyba nie muszę mówić jak bardzo forum się w tamtym czasie zmieniło? Na lepsze oczywiście. wink

Myślę, że podobnie mogłoby być z Twoimi filmami. Są prowadzone w świetny sposób, mnie samego zachęciły do dalszego rozwoju. Ale gdyby tylko nieco poprawić jakość przekazywanej w nich wiedzy (bo przecież unikanie złych praktyk i pokazywanie od razu tych dobrych, nic nie kosztuje, prawda?), byłoby świetnie. Wszyscy zdajemy sobie sprawę, że masz swoją wizję nauczania. Tylko, że (czego oczywiście nie mamy Ci za złe) przerwy pomiędzy kolejnymi odcinkami są dość spore, osoba ucząca się będzie nieraz tkwiła długi czas w fałszywym przekonaniu.

Podsumowując, przedstawiony wcześniej pomysł uważam za bardzo dobry i polecam się nad tym zastanowić. smiley

1
komentarz 30 września 2017 przez efiku Szeryf (75,160 p.)

Zobaczymy jak wyjdzie to przy tym najbliższym PHP, ale docelowo zadowalające byłoby, aby inne osoby mogły wypowiedzieć swoje zdanie. Jak pisałem, jeśli nie publicznie (bo to mogłoby spowodować duży napływ dobrych i mniej dobrych sugestii od różnych osób) to przynajmniej do kilku zaufanych osób. 

Wszystko zostało powiedziane w tym temacie, stąd brak odzewu innych, bo byśmy tylko kopiowali. Ja to bym jeszcze prześledził pytania na forum jakie się pojawiają, idzie z nich zobaczyć z czym najwięcej jest problemów. Zawsze wysyp jest po nowym odcinku. 

Dziękuję za uwagę,
CodersCommunity

2
komentarz 4 października 2017 przez event15 Szeryf (93,790 p.)
Powiem tylko tyle, że jakiekolwiek złe zdanie miałbym o sposobie nauczania PHP, tak zawsze jestem chętny do pomocy forumowiczom, którzy ciągle odpowiadają na te same pytania oraz w rozwoju bardziej wartościowych materiałów na kanale. Za darmo, bez chwały.
komentarz 14 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)

 Powiem tylko tyle, że jakiekolwiek złe zdanie miałbym o sposobie nauczania PHP, tak zawsze jestem chętny do pomocy forumowiczom, którzy ciągle odpowiadają na te same pytania oraz w rozwoju bardziej wartościowych materiałów na kanale. Za darmo, bez chwały.

Bardzo miło mi to słyszeć - to wartościowa postawa, bo produktywna, tworząca wartość. No i wymagasz od siebie, a nie od innych (co jest trudniejsze niż porównywanie się z innymi i wymaganie perfekcji od kogoś, ale w mojej opinii jest jednocześnie podstawą bycia mężczyzną z pasją i inicjatywą). 

Niestety najczęściej w praktyce "bycia w internecie" gdy spotykam się z krytyką, to jest ona naszpikowana bezpardonowymi ocenami, pejoratywnymi, osobistymi docinkami na temat tego jak "słabym" jestem nauczycielem, wyśmiewaniem i etykietowaniem - zwłaszcza po wpisach blogowych Comandeera pozycjonowanych wprost na moje nazwisko wielokrotnie miałem do czynienia z "czystym" hejtem wylewanym różnymi kanałami (zero konkretu, tylko jakiś chamski sposób wyrażenia przesłania "jesteś do niczego" - oczywiście zdaję sobie sprawę, że takiej konsekwencji autor wpisów blogowych nie chciał i może nie być jej w ogóle świadomy).

Zwłaszcza młodzi ludzie (i to szczególnie na YouTube) przyzwyczajeni do "dram", "pocisków", "x obraża", "x masakruje" często nie potrafią rzeczowo dyskutować, stąd każdy krytyczny post (niezależnie od jakości) niejako "nasyła" na Ciebie rzeszę przeróżnych ludzisk, którzy lubują się w obrażaniu (bo nie można tego nazwać krytyką). Dlatego zasadniczo nie warto się angażować w jałowe "dyskusje". Od czasu do czasu pojawi się coś wartościowego, jak na przykład krytyka konkretnych momentów filmów, którą stworzył dawniej Comandeer (emocjonalny wpis "Mam nierówno pod sufitem" przez uprzejmość pominę), co daje wgląd w to jak i dlaczego ktoś prezentujący odmienny ("wstępujący") styl nauczania uzasadnia swój punkt widzenia. I to lubię przeczytać, żeby poprawiać swój warsztat i poszerzać horyzonty. Problem jest niestety taki, że wartościowej krytyki jest w sieci za mało.

Z chęci pomocy forumowiczów skorzystam na pewno, to miła odmiana! Niedługo podeślę Arkowi kod PHP#5. Pozdrawiam i dziękuję za wypowiedzi! - może kiedyś będę mógł znowu komfortowo udzielać się na forum, bez potrzeby odpowiadania na ciągłe listy zarzutów. Co jakiś czas będę próbował to robić. Miłego weekendu! MZ

komentarz 14 października 2017 przez efiku Szeryf (75,160 p.)

może kiedyś będę mógł znowu komfortowo udzielać się na forum, bez potrzeby odpowiadania na ciągłe listy zarzutów. Co jakiś czas będę próbował to robić. Miłego weekendu! MZ

Przecież zawsze mogłeś, sugeruję po wrzuceniu nowego odcinka z PHP#5 śledzić forum przez tydzień i zobaczyć z jakimi problemami przyjdą ludzie, a jakie dajemy rozwiązania. Mile widziane dorzucenie coś od siebie ;) 
 

komentarz 16 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)

Przecież zawsze mogłeś

Akurat pan nie powinien mieć problemu ze zrozumieniem, co mam na myśli. Dziękuję za poradę, pozdrawiam

komentarz 16 października 2017 przez efiku Szeryf (75,160 p.)
Luz ;)
+12 głosów
odpowiedź 22 września 2017 przez Rettles Bywalec (2,320 p.)
edycja 3 kwietnia 2020 przez Rettles

Generalnie zawsze unikałem js więc można powiedzieć, że jest to mój pierwszy z nim kontakt, ale poprawiłem co nieco. Naprawiłem ten "krytyczny błąd" :) i dodałem możliwość restartu bez konieczności przeładowania strony, losowanie kart no i troszeczkę przebudowałem skrypt.


Kod: Codesandbox

Demo: zagraj


EDIT:

Całkiem już usprawniłem grę:

  • Zwiększona ilość kart
  • Zmieniona tematykę na Hotsa, w sumie to całkowicie zmieniłem wygląd strony
  • Poziomy trudności
  • System punktacji, który bierze pod uwagę ilość tur, odkrytych kart oraz czas gry
  • Najlepszy wynik (rozróżnia poziomy trudności);

Powoli mi się kończą pomysły.

komentarz 2 kwietnia 2020 przez susanel Nowicjusz (160 p.)

@Rettles, Hej! chętnie zajrzałabym do tego kodu. Niestety linki są juz nieaktywne :(

komentarz 2 kwietnia 2020 przez Rettles Bywalec (2,320 p.)
edycja 2 kwietnia 2020 przez Rettles
Cześć, to prawda ustawiłem repozytorium jako prywatne, bo nie jestem już taki dumny z tego kodu jak kiedyś :D a w ostatnim czasie przyszło mi udostępniać GH potencjalnym pracodawcom, stąd taka decyzja. Link do samej stronki z grą już naprawiłem ;) a odnośnie kodu to spróbuję go udostępnić w innym miejscu, jak coś to dam znać pod tym komentarzem
komentarz 3 kwietnia 2020 przez Rettles Bywalec (2,320 p.)

@susanel, Zaktualizowałem post, dobrej zabawy :D

komentarz 3 kwietnia 2020 przez susanel Nowicjusz (160 p.)
@Rettles, Dziękuję bardzo! Jak najbardziej rozumiem. Ja dopiero się uczę więc dla mnie jest to pomocne. :)
1
komentarz 18 lipca 2023 przez Jan-Rychlik-SH Nowicjusz (100 p.)
+5 głosów
odpowiedź 20 września 2017 przez Schizohatter Nałogowiec (39,600 p.)
edycja 22 września 2017 przez Schizohatter
https://mortmortis.pl/stuff/CR-jQ-5.pdf

Można jeszcze zamiast tworzyć kolejne zagnieżdżenia kodu JS, użyć warunku przeciwnego do tego w ifie + return.

Przejrzałem końcówkę filmu - jest propozycja refaktoryzacji redundancji. Zwracam honor tutaj.

EDIT: Chciałbym przeprosić za JS punkt 4. Trochę za bardzo mnie zaszokował ten pomysł. Nie powinienem wyzywać tego od idiotyzmów.
1
komentarz 22 września 2017 przez Kamil Łydka Stary wyjadacz (13,600 p.)
edycja 22 września 2017 przez Kamil Łydka


Jak dla mnie to ten system dydaktyczny nie działa, skoro historia powtarza się co wypuszczenie odcinka...

Ja jeszcze jako niedawno początkujący (a może nadal) zwróciłbym też uwagę na to, że na filmikach jest przedstawione jakby idealne programowanie. 

A jest trochę inaczej w rzeczywistośći... Z własnego doświadczenia i czytając pytania na forum, można zauważyć że jednak początek, to tonięcie w wielkiej ilości błędów, problemów, zagwoztek i trudów.

Ja wiem, że film bez błędów, niekompilującego się kodu albo np. niedziałających funkcji - ogląda się dużo milej i wszystko wygląda bardziej profesjonalnie, ale początkujący robi sobie trochę złą wizje, potem szybko się poddaje i nie potrafi sobie radzić z problemami. Źle wpisana ścieżka do pliku/zdjęcia, to chyba najczęstszy problem i  tylko pytanie "dlaczego nie działa?". Wystarczałoby przypominać o konsoli (choć widziałem, że tutaj coś była użyta) i pokazać jak są wyświetlanie najbardziej spotykane błędy.

Zapewne wtedy byłoby trzeba podzielić taki odcinek na parę mniejszych, ale to też wyszłoby na dobre, bo 1h i 20 minut, to i tak naprawdę dużo, jeśli chodzi o dawkę wiedzy.

Taki tam, mój mały wywód. ;)

 

PS. Ja i tak cały się zastanawiam czemu wszystko jest przedstawiane na tym okropnym Notepad++, jakby nie było lepszych i ładniejszych edytorów (a to też usprawniłoby naukę). ;)

komentarz 22 września 2017 przez emczek Nowicjusz (190 p.)
No właśnie przeczytałem dokładnie całe code review, i z mojego (niewielkiego) doświadczenia wiem, że były tam uwagi słuszne. O to się nie czepiam. Po prostu forma przekazania tego wyglądała trochę pretensjonalnie. Z chęcią zobaczyłbym Twój kod po tych poprawkach o których piszesz (nie żeby się czepiać, tylko zobaczyć inne podejście). Natomiast nie uważam, żeby pan MZ robił złą robotę - nawet jeśli coś nie jest idealne albo aktualne to po to są różne źródła żeby to sobie zrewidować. A od czegoś trzeba zacząć.
3
komentarz 22 września 2017 przez niezalogowany
#chcęPowiadomienia
2
komentarz 22 września 2017 przez Comandeer Guru (599,730 p.)

Natomiast nie uważam, żeby pan MZ robił złą robotę - nawet jeśli coś nie jest idealne albo aktualne to po to są różne źródła żeby to sobie zrewidować. A od czegoś trzeba zacząć.

To jest, niestety, pobożne życzenie i zwracałem na to uwagę wielokrotnie. Wystarczy sobie poobserwować pytania o ocenę kodu tutaj na forum czy na grupach na FB. Niemal nikt nie rewiduje wiedzy w różnych źródłach, dlatego tak istotne jest, by źródło było jak najbardziej poprawne merytorycznie.

4
komentarz 23 września 2017 przez efiku Szeryf (75,160 p.)

Nic się nie zmieni więc na siłę nie ma co ciągnąć tej dyskusji.

Naprawdę koniec.

CR to kompromis pomiędzy "Nauczycielami" a "Programistami".
Ja i tak odpowiadam tutaj na jakiś 1% pytań, bo to się robi nudne jak co chwile pojawiają się pytania: Dlaczego mi ten kod nie działa , o użyłem @, bo tak mi pokazali i nie działa!!!! XD Albo umiem kopiować kod, ale nie umiem zrobić prostego routingu

@Schizohatter, wróć do udzielania się na grupie fejsowej w pierwszych krokach, tam nie ma takiego podziału, lub tutaj odpowiadaj osobą które używać zaczęły jakiś FW, gdzie widzisz, że poziom pytania jest warty odpowiedzi. ;)

Temat wyczerpany, bo za chwilę będziecie krzyczeć na siebie. 

PS: Taki śmieszny mem znalazłem ;) 
https://i.stack.imgur.com/ssRUr.gif

+4 głosów
odpowiedź 10 marca 2019 przez eswu Początkujący (280 p.)
edycja 10 marca 2019 przez Patrycjerz

1. losowość umieszczenia kart przy rozdaniu

2. brak reakcji przy dwukrotnym kliknięciu na tą samą kartę

3. możliwość restartu gry po zakończeniu obecnej

W pliku memory.js wprowadziłem następujące zmiany:

ad 1) na samym początku pliku:

var cards_list = ["ciri.png", "geralt.png", "jaskier.png", "jaskier.png", "iorweth.png", "triss.png", "geralt.png", "yen.png", "ciri.png", "triss.png", "yen.png", "iorweth.png"];
var cards = new Array();

for(var i = 12;i>0;i--)
{
    var rand_id = Math.floor(Math.random() *i);
    cards.push(cards_list[rand_id]);
    cards_list.splice(rand_id,1);
}

ad 2) w definicji funkcji revealCard(nr) zamiast "if ( opacityValue != 0 && lock == false)" :

    if ( opacityValue != 0 && lock == false && nr != visible_nr )

ad 3) w definicji funkcji hide2Cards(nr1, nr2) zamiast "$('.board').html('<h1>You win!<br>Done in '+turnCounter+' turns</h1>');" :

$('.board').html('<h1>You win!<br>Done in '+turnCounter+' turns. <span class="reload" onclick="location.reload()">Click to reload.</span></h1>');

W main.css na koniec pliku dodałem:

.reload
{
    margin-top: 5px;
    letter-spacing: 2px;
}

.reload:hover
{
    color: #e9b64a;
    cursor: pointer;
}
+1 głos
odpowiedź 25 września 2017 przez emczek Nowicjusz (190 p.)
Wspominał Pan w odcinku o innych grach opartych na jQuery. Postawiłem sobie dość ambitne zadanie jak na kogoś kto tylko hobbystycznie uczy się programować i próbuję zaprogramować warcaby. Wstępna wersja poniżej. Zdaje sobie sprawę, że wiele rzeczy można w tym chaotycznym kodzie usprawnić, i że gra wymaga jeszcze dalszej pracy. Na razie jestem zadowolony, że chociaż tyle udało mi się napisać. :)

Założenia: bicia są obowiązkowe, można bić do tyłu

Do okodowania: bicia wielokrotne, zamiana w damkę, wykrywanie remisu (15 ruchów bez zbicia), zaprogramowanie sztucznej inteligencji żeby można było grać z komputerem a nie tylko z samym sobą ;)

https://codepen.io/mczekajski/pen/ayxpaR
1
komentarz 5 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Super, dobra robota! :) Link do demo warcab trafi niedługo na nasz fanpage na Facebooku -  jeśli masz jakieś portfolio / bloga, to możesz osadzić tam (pod dowolnym adresem) to demo - zyskasz trochę wizyt w swojej domenie. Pozdrawiam
komentarz 5 października 2017 przez emczek Nowicjusz (190 p.)
Dziękuję. Portfolio dopiero się tworzy (pewnie jeszcze długo, bo nie mam za dużo do pokazania...). Ta wersja na codepen już jest nieco bardziej rozwinięta, okodowałem bicie wielokrotne, zamianę w damkę, jeszcze kompletny mechanizm bicia damką wymaga dopracowania. Proszę tylko podpisać link moim imieniem i nazwiskiem (Marcin Czekajski) żebym w razie czego mógł się pochwalić ;)
komentarz 6 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Jasna sprawa, wrzucę zatem w najbliższy poniedziałek. Pozdrawiam
+1 głos
odpowiedź 29 września 2017 przez baran860 Nowicjusz (200 p.)
Po obejrzeniu video zabrakło mi warunku sprawdzającego czy ta druga karta ma inny nr niż ta pierwsza, bo na chwilę obecną istnieje możliwość odkrycia jednej karty potem ponowne jej kliknięcie co powoduje usunięcie z planszy tylko jednej karty :)
komentarz 5 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Tak jest, to właśnie trzeba poprawić w obsłudze kliknięcia karty. Pozdrawiam
+1 głos
odpowiedź 15 października 2019 przez rafrucin Nowicjusz (160 p.)

Witam,

moja wariacja na temat:

https://github.com/Rafrucin/memory

- dodano wiecej kart i je zmieniono

- dodano dzwieki

- kod jest latwo skalowalny 

 

komentarz 15 października 2019 przez Mirosław Zelent Nałogowiec (34,750 p.)
Wow, fajnie zrealizowane Panie Pawle, także "pod maską :) Pozdrawiam
komentarz 15 października 2019 przez rafrucin Nowicjusz (160 p.)

Wersja Pawła była jedną z inspiracji,  ja mam na imię Raf smiley ale i tak dziękuję za dobre słowo. 

komentarz 15 października 2019 przez Mirosław Zelent Nałogowiec (34,750 p.)
A, rozumiem - nie doczytałem, że przecież Pana imię to Rafał, a Pawła wziąłem z powodu wspomnienia o wersji Pawła Niesiołowskiego (przepraszam). Pozdrawiam!
+1 głos
odpowiedź 14 lutego 2021 przez Paweł Gargula Nowicjusz (240 p.)

Cześć

Dołączam się do zabawy.

Generalne zmiany:

- Osadzenie rozgrywki w klimacie gry League of Legends

- Losowanie kart

- Resetowanie planszy po wygranej

- Próba uproszczenia kodu

Demo: https://pawelgargula.github.io/MemoryGame/

Kod: https://github.com/PawelGargula/MemoryGame

Pozdrawiam

Paweł

+1 głos
odpowiedź 27 lipca 2021 przez qwiateq Początkujący (430 p.)
Dorzucam swoją, trochę poprawioną wersję. Na pewno można tu jeszcze dużo poprawić, ale jako ćwiczenie z odcinka zrobiłem tyle. Zebrałem to co już padło w wątku i w ten sposób sobie poćwiczyłem.

Kod:

https://github.com/pwkwiatkowski/MemoryGame_js_jquery/blob/main/docs/memory.js

Gra:

https://pwkwiatkowski.github.io/MemoryGame_js_jquery/
0 głosów
odpowiedź 25 września 2017 przez Gambr Dyskutant (7,530 p.)

To funkcja która losowa zapełnia tablicę  parami kart bez duplikowania :)

var cards = [
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
    "empty",
];
function setStartPhotos()
{	
	for(i=0; i<12; i++)
	{
		$('#c'+i).css('background-image', 'url(img/game/karta.png)');
	
	}
	generateRandomBoard();
}
function generateRandomBoard()
{
	var ciri=0; geralt=0; jaskier=0; iorweth=0; triss=0; yen=0; 
	var random=0; 
	var randomSwitch =0;
	do
	{
		randomSwitch = Math.floor((Math.random()*6)+1);
		random=Math.floor((Math.random()*12)+1)-1;
		switch(randomSwitch)
		{
			case 1:
			{
				if((ciri<2)&&(cards[random]=="empty"))
				{
					ciri++;
					cards[random]="ciri.png";
				}
			
			break;
			}
			
			case 2:
			{	
				if((geralt<2)&&(cards[random]=="empty"))
				{
					geralt++;
					cards[random]="geralt.png";
				}
			break;
			}
			case 3:
			{	
				if((jaskier<2)&&(cards[random]=="empty"))
				{
					jaskier++;
					cards[random]="jaskier.png";
				}
			break;
			}
			case 4:
			{	
				if((triss<2)&&(cards[random]=="empty"))
				{
					triss++;
					cards[random]="triss.png";
				}
			break;
			}
			case 5:
			{	
				if((yen<2)&&(cards[random]=="empty"))
				{
					yen++;
					cards[random]="yen.png";
				}
			break;
			}
			
			case 6:
			{
				if((iorweth<2)&&(cards[random]=="empty"))
				{
					iorweth++;
					cards[random]="iorweth.png";
				}
			break;
			}	
		}
	}
	while(ciri<2||geralt<2||jaskier<2||triss<2||yen<2||iorweth<2);
	document.write(cards);
}



 

2
komentarz 25 września 2017 przez Ehlert Ekspert (212,630 p.)

Pomijając tą tablicę, to tyle wyciekło Ci do globalnego scopeu, że random to nie random laugh

komentarz 26 września 2017 przez niezalogowany

Zaproponuję bardziej funkcyjne rozwiązanie z małą pomocą biblioteki lodash

const shuffleCards = cards => _(cards)
	.concat(cards) // podwojenie ilości kart
	.shuffle() // pomieszanie kart
	.value() // zwrócenie nowej tablicy

const cards = ['Dowolna', 'liczba', 'kart']
const gameBoard = shuffleCards(cards)

console.log(gameBoard) 
// ["Dowolna", "liczba", "Dowolna", "liczba", "kart", "kart"]

 

komentarz 26 września 2017 przez Rettles Bywalec (2,320 p.)
edycja 26 września 2017 przez Rettles

Z pomocą jQuery możesz znacznie skrócić twój zapis ;)

Używając arrow (=>) function

// twoja tablica z kartami (bez duplikatów)
let cards = ["1.png", "2.png", "3.png", "4.png"];

// funkcja, która dubluje tablice oraz sortuje ją w losowej kolejności
let shuffleArray = (array) => $.map(array, (element) => [element, element]).sort(() => 0.5 - Math.random());

cards = shuffleArray(cards);

 

funkcję shuffleArray() można zapisać również w taki sposób:

let shuffleArray = function (array) {
    return $.map(array, function (element) {
        return [element, element];
    }).sort(function () {
        return 0.5 - Math.random();
    });
};

 

komentarz 26 września 2017 przez Gambr Dyskutant (7,530 p.)

Zrobie wersję na lokalnych zmiennych, w których funkcja zwraca tablice :)

Ale jak na początkującego to chyba nie ma dramatu :D? 

2
komentarz 26 września 2017 przez niezalogowany

Ten pierwszy kod, to trochę dramat był : p

Hmm, tak naprawdę nie potrzeba do tego jQ

const shuffleArray = arr => [...arr, ...arr].sort(() => 0.5 - Math.random())

Cały problem rozchodzi się o funkcję mieszającą, spójrz na komentarze do tej odpowiedzi, w wolnej chwili sprawdzę dokładniej o co chodzi - ale wstępnie miesza całkiem dobrze

0 głosów
odpowiedź 24 października 2017 przez Paweł Niesiołowski Nowicjusz (140 p.)
edycja 24 października 2017 przez Paweł Niesiołowski

Przyłączam się do zabawy. smiley


Najważniejsze zmiany, które wprowadziłem:

  • naprawiłem "błąd krytyczny" i uprościłem kod,
  • zmieniłem tematykę i wygląd gry - osadziłem ją w świecie serialu "Twin Peaks",
  • dodałem losowanie kart i zwiększyłem ich liczbę,
  • stworzyłem możliwość zapisywania najlepszych wyników (z wykorzystaniem AJAX i PHP),
  • dodałem licznik odwiedzin.

Kod gry: GitHub

Demo: Twin Peaks Memory Game

 

komentarz 25 października 2017 przez Mirosław Zelent Nałogowiec (34,750 p.)
Ha, świetna robota! Laury Palmer się nie spodziewałem, dobry gust serialowy :) No i świetna obudowa w JS, PHP i AJAXie! Poczekam jeszcze trochę czy pojawią się kolejne przeróbki i również pójdzie na naszego FB. Fajnie, że podzieliłeś się pełnym kodem. Pozdrawiam! :)
komentarz 25 października 2017 przez Paweł Niesiołowski Nowicjusz (140 p.)
Dzięki za ten komentarz. Twoje słowa dużo dla mnie znaczą. Niecierpliwie czekam na kolejne odcinki Twoich świetnych kursów. Pozdrawiam! :)
0 głosów
odpowiedź 28 grudnia 2017 przez zirael [PL] Mądrala (5,200 p.)
Czy kod który jest poddany refaktoryzacji z kursów można znaleźć np na githubie?
komentarz 28 grudnia 2017 przez niezalogowany
komentarz 28 grudnia 2017 przez zirael [PL] Mądrala (5,200 p.)
Dziękuję bardzo! Pozdrawiam.
0 głosów
odpowiedź 3 stycznia 2018 przez Michał Kucharski Nowicjusz (140 p.)
Mógłby mi ktoś wskazać jak sprawić, żeby po kliknięciu dwa razy tego samego kafelka nie znikało i nie zaliczało tury? Resztę kodu poprawiłem, ale z tym sobie nie mogę poradzić...

Pozdrawiam
komentarz 4 września 2019 przez Irim Nowicjusz (100 p.)

Dopiero sam zacząłem przerabiać ten kurs stąd ta późna odpowiedź, ale może komuś kto ma pierwszą styczność z programowaniem się przyda, a trafi na ten kurs później. smiley

if(oneVisible == false){
            //First card
            oneVisible = true;
            visibleNr = nr;
            lock = false;
        }else{
            //Second card
            if(visibleNr != nr)
            {
                if(cards[visibleNr] == cards[nr])
                {
                    setTimeout(function(){ hide2Cards(nr, visibleNr)}, 750);
                    lock = false;
                    pairsLeft--;
                    if(pairsLeft<=0){
                        $('.board').html('<h1>You win! <br/>Done in ' + turnCounter + ' turns</h1>');
                    }
                }else{
                    setTimeout(function(){ restore2Cards(nr, visibleNr)}, 1000);
                    lock = false;
                }
    
                turnCounter++;
                $('.score').html('Turn counter: ' + turnCounter);
                oneVisible = false;
            }
        }

Dodałem trochę dodatkowego kodu, dzięki czemu mam nadzieję nowe osoby będą mogły szybciej znaleźć miejsce zmian. W warunku else całość została opakowana w jeszcze jedną instrukcję warunkową, która sprawdza numer pierwszej karty (visibleNr) oraz drugiej karty (nr pobranej z argumentu funkcji). Każda karta ma swój kod, więc jeśli numery karty są różne (stąd warunek visibleNr != nr) to wykona się dalsza część elsa.
 

Pozdrawiam

0 głosów
odpowiedź 26 lutego 2018 przez Elche Nowicjusz (140 p.)

Szukam sposobu na uproszczone dodawanie nasłuchiwaczy

Tu umieściłem mój kod

https://jsfiddle.net/t8wgrdeg/1/

chodzi mi konkretnie o tą linijkę

for (var i = 0; i < cardsList.length; i++)
{

	cardsList[i].addEventListener("click", function() { revealCard(i); } );
}

Całoś przy tym działa tak, że nie odsłania kart, ale po dwóch kliknięciach zlicza tury. Po 6. turze pojawia się komunikat "You win". 

Albo nasłuchwacze nie zostały dodane albo parametr nie przesłany albo jedno i drugie. Będę wdzięczny za naprawodzenie na rozwiązanie.

komentarz 17 lutego 2022 przez Qwertak Nowicjusz (100 p.)
Po tylu latach przydać się może tylko komuś innemu, ale było tłumaczone gdzieś wyżej i najprostszym rozwiązaniem jest zmienić 'var' na 'let'.
0 głosów
odpowiedź 15 marca 2018 przez kordix Gaduła (3,910 p.)
edycja 15 marca 2018 przez kordix

Niby takie proste żeby przerobić addEventListener dla każdej karty na pętle a miałem z tym potworny problem.

Powiedzmy że na razie karta ma zwrócić jej numer.

for(var i=0;i<20;i++){
     document.getElementById('c'+i).addEventListener("click",function(){
        revealcard(i);
    });
function revealcard(nr){
console.log(nr);
};

Tutaj z uporem maniaka zwraca tylko ostatni numer z pętli obojętnie której karty bym nie klikał.

Może to obejść w taki sposób?

for(var i=0;i<20;i++){
     document.getElementById('c'+i).addEventListener("click",function(){
        revealcard(this.id.substring(1));
    });

Teraz ładnie zwraca mi odpowiedni numer, ale nie wiem czy to jest najlepsza metoda.

W tych refaktoryzacjach widzę jakąś inną metodologię, np. użycie właściwości target z jquery, ale nie widzę zrobienia tego w czystym js tak żeby po prostu zastąpić ten kod z odcinka. 

Czemu ta pierwsza metoda nie działa?

Intrygującą metodę widzę w ostatniej refaktoryzacji

var cardsList = $('.board div:not(.score, .reset)');

for (var i = 0; i < cardsList.length; i++)
{

    cardsList[i].addEventListener("click", function() { revealCard(i); } );
}

Ale nie czaję jak działa to cardsList - ten uchwyt zwraca tablicę wszystkich divów wewnątrz klasy board które nie mają klasy score albo reset ta? Jest na to jakiś ekwiwalent bez jQuery?

2
komentarz 15 marca 2018 przez niezalogowany

Czemu ta pierwsza metoda nie działa?

W pętli for deklarujesz zmienną i, która po kilku milisekundach przyjmuje wartość 20. W momencie klikania, wyświetlasz jej zawartość -> stąd taki wynik.

Najprostszym rozwiązaniem byłoby zadeklarowanie zmiennej i słowem kluczowym let, zamiast var. Zasięg blokowy zmiennej sprawia, że każda iteracja ma na stałe przypisaną daną wartość iteratora.

Z drugiej strony, w tym miejscu, warto już poczytać o event delegation


Jest na to jakiś ekwiwalent bez jQuery?

documnet.querySelectorAll

0 głosów
odpowiedź 15 marca 2018 przez kordix Gaduła (3,910 p.)

Mam jeszcze inne pytanie jak to jest w końcu z tym zasięgiem zmiennych? Tutaj nie chce mi w ogóle reagować jeśli ustalę zmienną poza funkcją

var pierwszyklik = false;

function revealcard(nr){

console.log(pierwszyklik);

.......

Tutaj loguje mi po prostu undefinded, nawet jeśli mam ustaloną zmienną tuż ponad tą funkcją. Miał ktoś podobny problem?

komentarz 16 marca 2018 przez Marchiew Dyskutant (7,690 p.)
pokaż więcej kodu bo w tym fragmencie nie ma żadnego błędu
komentarz 16 marca 2018 przez kordix Gaduła (3,910 p.)
Dobra mam, użyłem potem var w if-ie czyli zamiast przypisać wartość definiowałem od nowa zmienną. Sory za głupie pytanie.

Podobne pytania

+6 głosów
1 odpowiedź 2,246 wizyt
pytanie zadane 29 grudnia 2017 w Nasze poradniki przez Mirosław Zelent Nałogowiec (34,750 p.)
0 głosów
1 odpowiedź 418 wizyt
pytanie zadane 7 listopada 2017 w JavaScript przez Gabrysia Sochacka Nowicjusz (140 p.)
+1 głos
0 odpowiedzi 2,000 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...