Akademia hakerów

0

Ostatnio wypuściliśmy akademie hakerów. Proszę was o ocenę i recenzję zawartości. Czy taka forma Wam odpowiada?

https://akademiahakerow.pl/

0

Jestem Adusiem czyli c**** wersją siebie
To moje top 5 idiotyzmów. Kiedyś może podświadomie się do tego stosowałem, a dzisiaj robię swój biznes powoli. Bez żadnych ciśnień. I dziękuję Wam, że to doceniacie.

o, będzie robione wolmo z aniserowiczem xD

PS. Świetny jest ten komunikat o adblocku przy każdym wczytywaniu strony

2

Mam mieszane uczucia. Nie umiesz zrobić nawet działającego linka na forum (https://https//akademiahakerow.pl/ = 404), strona jest brzydka i nie wiem co ma wspólnego z hakerami — ta nazwa to totalny clickbait. Natomiast treści na stronie są dość ciekawe i prosto napisane. To na plus. Powodzenia.

9

Raz ze to kopiowane posty ze stacka, a dwa ze są stare i błędne xD Pierwszy wpis z brzegu:
https://akademiahakerow.pl/aktualnosci/pojedynczy-wpis/JakodczytaciprzekonwertowacInputStreamnaStringwJavie
Tyle słów, a o tym ze klasa InputStream od Javy 9 (czyli już od 2017 roku) ma readAllBytes() ani słowa https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/InputStream.html#readAllBytes() :D A wystarczyło w tym wątku na stacku przeczytać więcej niż tylko oznaczony post, bo w innych to rozwiazanie się już pojawia.

4

Zabawne że dwa z pierwszych pięciu artykułów w "Akademii Hackerów" jest o html/css :D

Ciekawe czy na kursach dziennikarzy śledczych jest lekcja o wyrównywaniu tabelek w Wordzie.

6

Mamy 2020 rok a Ty piszesz o JavaBeanach. Gdzie byłeś ostatnie 10 lat? Jak chcesz kontynuować takie treści to bardziej by pasowała Akademia Archeologów lub Retro Java

1

Artykuł: https://akademiahakerow.pl/blog/pojedynczy-wpis/Roznicamiedzyprogramistamiroznychszczebli

Wygląda jakby nie był zredagowany, a jedynie napisany raz i wrzucony na stronę. Jakby nie przeczytały go więcej niż jedna osoba (ta która go napisała). Jest krótki, i aspekty z różnych szczebelków pokrywają się ze sobą.

Np:

Dla nich działające oprogramowanie i dobre oprogramowanie są równoważne.

oraz

Dla starszych programistów istnieje różnica między dobrym oprogramowaniem a działającym oprogramowaniem.

Z jednej strony rozumiem, o co chodziło autorowi - o różne "poziomy wtajemniczenia", (np o moment kiedy przestaje się traktować wyjątki jak "błędy", a zaczyna jak control-statement, taki sam jak if i return); ale z drugiej uważam że przypinanie tym "poziomom wtajemniczenia" etykietek korporacyjnych (junior, mid, senior) wydaje się proste. Jak sprowadzanie wyniku egzaminu do trzech ocen, mimo że egzamin mógł składać się z wielu aspektów. Po drugie, nie wydaje mi się żeby było to coś w stylu wbijanie leveli, jak w grze, tylko raczej płynne spektrum, któremu ciężko wskazać konkretną etykietkę.

Artykuł jest też tendencyjny, bo nie bierze pod uwagę wyjątków - np ambitnych dzieciaków (np kogoś kto zaczął programić wcześnie, i mimo małej/żadnej jeszcze wiedzy, ma bardzo dobry mindset, albo biegłość w analitycznym myśleniu) oraz tak zwanych (tzn, ja lubię ich tak nazywać) "senior juniorów" - czyli ludzi w starszym wieku 45-55 lat, którzy byli w dziedzinie IT trochę, ale dopiero teraz wchodzę w techniczne IT (np QA/Programowanie), i dostają etykietkę często seniora/mida ze względu na wiek/staż, ale niemniej wiedzę i umiejętności mają mniejsze niż niejeden mid albo nawet i junior (+ często mają duże ego).

Oraz moja osobista uwaga: stosowanie takich słów jak "głupie" o tak szerokiej dziedzinie sprawa wrażenie nie rozważenia wszystkich opcji, jakby autor miał w głowie dwa światy: czarny biały. Nie mówię że jest tak na prawdę, mówię tylko że stosowanie takich prostych słów takie wrażenie sprawia.

Więc, moim zdaniem do poprawy:

  • Znaleźć lepsze określenie wartościowego/miernego podejścia, zamiast słowa "głupie"
  • Jeśli już dzielić na szczebelki, to nie przypinać etykietek korporacyjnych
  • Wymienić więcej cech dobrego i początkującego programisty, ale tak by nie były swoimi przeciwieństwami (np "junior nie pisze testów", "senior pisze testy").
  • Rozważyć ekstremalne przypadki
  • Postarać się żeby do środkowego szczebelka nie można było przypiąć taga "misc", bo teraz tak właśnie ten szczebelek wygląda.
2

A ten chamski modalny prompt() w java scripcie:
Screenshot 2020-06-08 at 14.45.23.png
(i to wyskakujący na każdym przeładowaniu strony) jest conajmniej kuriozalny.

0

wiele rzeczy poprawiłem, dziękuję. Strona się trochę rozwinęła, zapraszam ponownie.

2
Adrian Stolarski napisał(a):

wiele rzeczy poprawiłem, dziękuję. Strona się trochę rozwinęła, zapraszam ponownie.

No moim zdaniem poziom się nie zmienił.

  1. Artykuł Dziwne zachowanie zmiennych w funkcji w JS
(function(){
  var variable1 = variable2 = 5;
})();

Od razu widać że variable1 jest w scope'ie loklanym, a variable2 w globalnym (to samo co variable2 = 5). + Splash artykułu nie ma nic wspólnego z treścia.

  1. PHP i strpos - proste zadanie
    screenshot-20200614222835.png
    To formatowanie kodu, quote'y utf8 zamiast ", spacje przed $ w zmiennych, ten example code - Tragedia! Ja swoich oczu nie kalam takim pomiotem szatana. Proszę, zainstaluj jakieś lepsze rozwiazanie do wyświetlania kodu, bo tego się nie da czytać.

Co do tematyki samego artykułu, zgadzam się, używanie strpos() bez === false (bo wszystko inne !, ==0, == false nie przejdzie) to strzelanie sobie w stopę, warto o tym pamiętać, początkujący często zapominają - PHP ssie pod tym względem, że zastawia pułapke na takiego kogoś - wieć to trochę wyjaśnia sens tego artykułu - ale to ciągle można znaleźć po prostu w dokumentacji PHP. 0 for first element, false for element not found. Wiadomo że trzeba zrobić === false.

  1. Artykuł Czym wogóle w Java jest interfejs fukcjonalny:
    Poza oczywistym błędem ("w ogóle") w tytule, i poza tym że porusza temat dosyć błachy (który każdy może znaleźc w sekundę), i poza tym że porusza raczej temat drugorzędny - bo pierwszorzędnym były oczywiście lambdy i method reference w javie, a @FunctionalInterface to ich konsekwencja, co stało się w sumie już nieaktualne bo teraz nawet bez tej anotacji można korzystać z takich interfejsów w formie lambd/method reference. Także art niby spoko, ale to tak jakby ktoś zrobił artykuł o tym: "Jak użyć klamki żeby otworzyć okno" - Większść ludzi już to dawno wie, a nawet jak nie wie to może w banalny sposób się dowiedzieć.

  2. Różnica pomiędzy Observable a Promise
    Merytoczynie wartość: tragiczna.

  • Pierwsze zdanie i już błąd: Promise a Observable w Angularze? i już błąd, bo to nie w angularze - Promise jest w JavaScript od es6, a Observable jest dostarczane przez RxJS.
  • Zabrakło informacji że Promise jest asynchroniczna, a z tego co wiem Observable może być zarówna asynchroniczna jak i synchroniczna. Poza tym, z Twojego artykułu wynika (przynajmniej ja tak go odczytałem), że zawsze Observable jest lepszy niż Promise, więc sekcja KIEDY STOSOWAĆ PROMISE dla mnie nie ma sensu. Miałaby gdybyś wymienił zalety korzystania z Promise'ów zamiast Observable.
  1. Dziwny problem podczas inkrementacji i dekrementacji w Java
    Niby okej. Sam dowiedziałem się czegoś nowego. Fajna rzecz, ale:
    • Unikaj słów "dziwny problem", bo to bardzo mało mówi o temacie. Ja nazwałbym ten art "Zaskakujący typ danych wyniku dodawania"
    • Mówienie "to się skompiluje" albo "to się nie skompiluje" to bardzo ogólne, proste i niezbyt ładne określenie błędów kompilacji którymi mogą być: błędy składniowe, błedy typów i inne. Doświadczony programista określiłby błąd doklądniej - w Twoim przypadku: niezgodność typów int i long. Nazwanie tego "nie skomiluje się" przymina mi moją nauczycielkę w technikum.
2
  1. Potencjalna pułapka podczas porównywania obiektów
    I tą pułapką jest to że typeof null to jest "object"? No niewiarygodne. (<nosarcasm>100% programerów JavaScript to nie rusza w żaden sposób.</nosarcasm>).
2

Taka rada na przyszłość. Może zapytaj kilku programistów nt pomysłu jaki masz, zanim napiszesz artykuł? Bo myślę że gdybyś powiedział komuś np że chcesz pisać art Promise vs Observable, albo tego że strpos() zwraca false dla brakującego elementu; to myślę że raczej byłoby Ci to odradzone. Zbierz może z 20 tematów na ktore chcialbyś napisać art, i zbierz chętnych, zrób ankiete, ustal co ludzie chcą wiedzieć / co nie dołoży się do śmieciowej wartości tej strony. Bo ja, widząc art o typeof null === "object" myślę: low value.

1

Lepiej jest coś robić niż nic nie robić i plus za to że coś zrobiliście. Ale błędy w nazewnictwie biją po oczach np. w tym artykule stosujecie interfejs funkcjonalny zamiast interfejs funkcyjny. Po drugie błędy językowe np.

Kompilator Javy uznaje interfejs za funkcjonalny, jeśli posiada on tylko jedną metodę abstrakcyjną. Ale można go oznaczyć dodatkowo poprzez @FunctionalInterface, aby to potwierdzić. Po wprowadzaniu tej adnotacji kompilator pokaże lepszej jakości błędy i obostrzeżenia.

obostrzeżenia to jakiś nowy twór - połączenie obostrzeń z ostrzeżeniami? No i te lepszej jakości błędy, oznaczają bardziej błędne błędy!? Czy chodziło o to, że pokaże lepszej jakości komunikaty błędów? Tytuł rozdziału PRZYKŁADY UŻYCIA INTERFEJSÓW FUNKCJONALNYCH a w nim są deklaracje interfejsów. Słowo użycie pasuje bardziej do definiowania klas implementujących interfejsy, choć po polsku bardziej by konweniowało zastosowanie czy wykorzystanie.
Brakuje tu też wyjaśnienia, do czego są potrzebne interfejsy funkcyjne?
Pojawia się w jednym z przykładów taki opis:

Interfejs ten jest interfejsem funkcjonalnym, choć deklaruje dwie metody abstrakcyjne: isNotNull() i equals(). Jak to jest funkcjonalny interfejs, kiedy ma dwie abstrakcyjne metody? Ponieważ sygnatura metody equals () pasuje do Object, a metoda isNotNull() jest jedyną pozostałą metodą abstrakcyjną.

Jak ktoś przeczytał najpierw, że interfejs funkcyjny musi mieć tylko jedną metodę abstrakcyjną, a potem piszesz, że może mieć też dwie abstrakcyjne, to wyjaśnienie, że taki interfejs funkcyjny jest ok, bo druga metoda pasuje do equals z Object raczej nie będzie zrozumiałe. Metoda equals jest pozornie abstrakcyjna, bo każdy obiekt dziedziczy po Object, w którym zdefiniowano tę metodę. A to powoduje, że w klasie implementującej taki interfejs nie musimy definiować metody equals. Bo po to są interfejsy funkcyjne, aby implementować dokładnie tylko tę jedną metodę za pomocą notacji lambd.
I jeszcze jedno: na początku znajduje się takie zdanie:

Interfejs funkcjonalny z założenia implementuje tylko jedną metodę abstrakcyjną.

Implementacja to zdefiniowanie ciała metody, to jak można zaimplementować metodę abstrakcyjną w interfejsie? Powinno być:

Interfejs funkcjonalny z założenia posiada tylko jedną metodę abstrakcyjną.

2

Osobiście wychodzę z założenia, że jak robić kontent na poziomie stolca typowego yorka to wolę nie robić go wcale.
Bez obrazy ale teksty, jak już wcześniej zostało wspomniane, słabe. Doświadczenia w żadnym security nie posiadasz. Co gorsza te wpisy udostępniasz na fb/linkedin.
Imho raczej nikt nie bierze Cię poważnie.

1

wchodze na strone gdzie widze Jak nie wpieprzyć się w gówno - lista kontrolna, dziekuje, wychodze

6

Tego to się nie spodziewałem:

https://akademiahakerow.pl/blog/pojedynczy-wpis/jak-nie-wpieprzyc-sie-w-gowno---lista-kontrolna -> Wasze pytania do potencjalnego pracodawcy

Absolutnie zero wkładu własnego - bezczelnie (i do tego nieprawidłowo, np. ucinając podpunkt 5.7) skopiowałeś efekty cudzej pracy, nie zostawiając nawet linka do oryginalnej dyskusji (nie, napisanie dziękuję wam nie jest ekwiwalentem hiperłącza).

Ciekawie zestawia się to z właściwym postem tu na forum, który - choć również jest kopią - to na samym początku linkuje do oryginalnego autora oraz na końcu przytacza dodatkowe źródła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1