2011-05-07:

ReverseCraft EOF i nowe videocasty

recraft:videocast
ReverseCraft zawisł już jakiś czas temu w niepewności. Z jednej strony chciałem go kontynuować, z drugiej strony wiedziałem, że po prostu nie mam na to czasu (przygotowanie 45-minutowego epsa trwało od 5 do 10 godzin). Postanowiłem więc oficjalnie zakończyć serię ReverseCraft, ale jednocześnie rozpocząć nową serię videocastów.

Forma nowych videocastów, co tu dużo mówić, jest inspirowana khanacademy.org - tj. krótkie odcinki (średnio od 5 do 15 minut), tablica (mspaint+tablet) jako "slajdy", oraz nagrywanie bez wcześniejszego przygotowania (prawie). Dzięki przyjęciu takiej formy, przygotowanie jednego epsu (łącznie z publikacją) zajmuje mi jakieś 30 miunt, a to jest w pełni akceptowalna ilość czasu którą mogę na to poświęcić.

Dla testów, od poniedziałku starałem się nagrywać przynajmniej jeden eps dziennie, żeby zobaczyć czy mi się to faktycznie uda. Dzięki temu, mam dzisiaj do zaprezentowania 12 epsów nowych videocastów o programowaniu ogólnie, w C, oraz o assembly. Dodatkowo, na dysku znalazłem dwa wykłady (po około 2h 45m każdy) i też je wrzuciłem online.

Całość dostępna jest na moim kanale youtube:
http://youtube.com/user/GynvaelColdwind

Disclaimer: Videocasty są nagrywane bez żadnego przygotowania, więc możliwe są wpadki, usterki, etc. Proszę o wyrozumiałość :)

Seria Gynvael's Videocast jest serią testową, w której mówiłem o:
- różnych aspektach związanych z używaniem funkcji rand() (3 epsy)
- działaniu linked listy i jej implementacji w C (5 epsów)

Seria Gynvael's Videocast Asm jest kursem assembly (drugie podejście do tematu, tym razem bardziej nastawione na praktykę, a mniej na teorię). W momencie pisania tego postu są 4ry epsy.

Seria MiscDev to owe wykłady znalezione na dysku - ich celem było zaprezentowanie "programisty przy pracy", więc zachęcam głównie osoby początkujące żeby rzuciły na to okiem.

I jeszcze dwa linki na koniec:
1. W kursie Asm korzystam z własnego "środowiska wykonania" assembly nazwanego Simplified Assembly Loader. Pisałem o tym w poprzednim poście.
2. Źródła z kursu Asm są w postaci obrazków listingów (sic). Więcej o tym tutaj.

Have fun. Komentarze jak zwykle mile widziane.

Comments:

2011-05-07 12:43:12 = Kele
{
Będą dostępne wersje do ściągnięcia? Zadziwiająco często mam problemy z łączem i żeby obejrzeć coś takiego, muszę latać do sąsiada z pendrivem :/
}
2011-05-07 12:49:25 = Gynvael Coldwind
{
@Kele
Są metody, żeby z YT ściągnąć ;>

Problemy z wersjami do ściągnięcia są dwa:
1. Nie mam na to łącza/miejsca na serwerach którymi dysponuje.
2. Są to stosunkowo duże pliki jak na tak krótkie filmy (do wrzucenia na YT nie muszę zbyt agresywnie tego kompresować), a nie chciałbym ich rekompresować (tj. chcę żeby każdy eps mi jak najmniej czasu zajmował, a rekompresja niestety trwa).

Natomiast jeśli będzie stosunkowo dużo głosów, że to by się przydało, to również będą wersje do ściągnięcia.
}
2011-05-07 13:00:50 = Kele
{
Okay ;> Właśnie zatrudniłem sąsiada do ściągania.

Jeżeli w zamian za "problem" ściągania przez jakiś downloader z YT ma być więcej EPów, so be it! :)
}
2011-05-07 13:02:28 = 3mpty
{
"Umarł król, niech żyje król!" :P Co do hostowania wersji do ściągnięcia myślę, że zgłosiło by się kilka osób. Ba nawet dało by się załatwić miejsce na jakimś uczelnianym serwerze, gdzie łącze jest przyzwoite i nikogo to zbytnio nie wykosztuje.
}
2011-05-07 15:29:42 = Jurgi
{
Jeśli ktoś nie ma już naprawdę żadnych dodatków do przeglądarki do ściągania z YT, to można skorzystać z serwisu SaveFrom.net. Jak się komuś nudzi, to może wyręczyć autora i zrobić np. mirror kanału na Vimeo – tam chyba standardowo jest opcja ściągnięcia filmu.
}
2011-05-07 22:58:30 = sortris
{
Gynvael, myślałeś, by zostać wykładowcą na którejś z uczelni?
Pozdrawiam.
}
2011-05-08 05:35:10 = anonim
{
Gyn ma "tylko" inzyniera, wiec nie da rady, chyba ze goscinnie :) (tak mi sie wydaje).
Co do odcinka na temat rand() (ten o rozkladzie wynikow) - warto byloby wspomniec, ze rozklad bitow w losowanym slowie bedzie rownomierny tylko wtedy, gdy RAND_MAX bedzie potega dwojki minus 1, tak wiec po przedefiniowaniu RAND_MAX i przymaskowaniu wyniku nie zawsze musimy dostac taki rozklad jaki chcemy zeby byl ;p zreszta rownie dobrze zamiast maskowania bitow mozna dzielic wylosowana liczbe modulo jakas mniejsza potege dwojki (a ze & jest zwykle szybsze to inna sprawa).
}
2011-05-08 10:43:59 = Karton
{
Seria Misc to strzał w dziesiątkę. Sczególnie jeśli będzie o tym jak szukać błędów.
}
2011-05-08 12:57:55 = Gynvael Coldwind
{
@Kele
:)

@Jurgi
Fakt, na Vimeo jest opcja ściągania. Ale YT muszę przyznać, że mi trochę bardziej podchodzi (być może z przyczyn oczywistych). Natomiast jak pisałem, jeśli będzie dużo chętnych do wersji typu Download, to się coś pomyśli (póki co dały mi znać 3 osoby).
Ew. jeśli ktoś na własną rękę przygotuje wersje do Download i gdzieś to shostuje, to z mojej strony problemów nie widzę :)
Natomiast imo nie ma sensu uploadować tego na inne serwisy streamujące - stworzyłoby to niepotrzebne rozproszenie imo (tj. np. trudno mi np. monitorować komentarze na kilku serwisach, w razie gdyby trzeba coś sprostować/wyjaśnić, etc).

@sortris
Tak, myślałem, i nie wykluczam takiego kroku ;)

@anonim
Zdarzają się wykładowcy bez dr przed nazwiskiem, ale przyznaję, że np. w .pl to jest rzadkość.
Ad RAND_MAX - słuszna uwaga, zapomniałem o tym powiedzieć. Wrzucę w opis, ew. wrzuć w komentarz na YT.

@Karton
Thx, przy czym nie planuje tej serii rozwijać.
Ad "szukanie błędów" - chodzi ci o debugowanie programów własnych czy o vulnerability research?
}
2011-05-09 18:24:22 = Xgrzyb90
{
Szczerze, bardziej podobał się mnie reversecraft (interface ;-)). Z drugiej strony, fajnie, że nie porzuciłeś robienie tutoriali. W ostateczności to twój czas i masz pełne prawo do robienia albo nic nie robienia. Co do poziomu merytorycznego, to uważam za bardzo dobry (w tej kwestii się akurat nie wiele zmieniło na szczęście ;-))
}
2011-05-09 19:08:35 = olo16
{
W jednym z odcinków kursu asm napisałeś że nie wykluczasz stworzenia kursu OSdevu. Jeśli to dojdzie do skutku, to jaki będzie poziom tych lekcji - czy żeby to zrozumieć wystarczy wiedza z tego kursu asm co jest teraz? Teraz właśnie uczę się asm a tematyka OSdevu mnie zaciekawiła. Ile w tym będzie asm a ile języków wyższego poziomu?

Fajnie by było poruszyć temat debugowania a konkretniej Heisenbugs - jak sobie poradzić gdy błąd pojawia się i znika w dziwnych okolicznościach lub pojawia się po podłączeniu debuggera. Jacy są główni podejrzani i co można wtedy zrobić.
}
2011-05-09 19:11:18 = olo16
{
* W przedostatnim zdaniu chodziło mi oczywiście o sytuację, gdy błąd znika po podłączeniu debuggera, chociaż sytuacja kiedy pojawia się tylko pod debuggerem też byłaby ciekawa.
}
2011-05-09 22:11:23 = Karton
{
@Gynvael Coldwind
Głównie swoich.
Niby wiem, że mogę przeglądać kod linijka po linijce, czy przeskakiwać funkcje i sprawdzać wartości zmiennych.
Kłopot w tym, że często zmienne w miejscu błędu i zaraz po nim nie mają niepokojących wartości i te pokazują się dopiero kilka(naście) linijek dalej.
Zdarzają się też(mi) przypisania do nie tego elementu tablicy co potrzeba.

Czasami to nawet nie szukam błędów tylko piszę dany kawałek tyle razy aż wyjdzie.

Wydaje mi się, że musi być jakaś lepsza metoda szukania błędów niż tylko intuicja i żmudny debug, ale jeszcze nic takiego nie wygooglałem.

}
2011-05-14 08:56:20 = Sebaa
{
Są jakieś szanse na kontynuację serii MiscDev? ;> (Jakieś ciekawe projekty C/C++ itp.) Z istniejących videoartów można wyłapać masee ciekawostek, więc przydałoby się więcej :)
}
2011-05-14 13:57:40 = o
{
I bardzo dobrze , chwała bugu !
Dzieci się nauczą pięciu sztuczek i będą wozić tyłki 2 metry nad "Kili mandżaro"
Nie wspominając o tym że cała masa z nich będzie uważać że to twoje autorskie techiki
Jak w przypadku AVERSÓW którzy przywłaszczyli sobie całą spuściznę z0mbiego i jego ziomów ;>
}
2011-05-14 14:47:27 = ajem
{
Jak chcą się uczyć to niech się uczą sami
a nie tak "wszystko na tacy"
}
2011-05-14 15:25:06 = zuo
{
Ja moze bym poddal sugestie z mojej strony,
czy moglbys zamiast videotutoriali pisac je?
Niesamowicie to ulatwia przegladanie tutoriala i pomijanie tego co sie wie/przeszukiwanie go etc. Znikaja tez chyba problemy z hostingiem.
}
2011-05-14 21:36:05 = Gynvael Coldwind
{
@Xgrzyb90
Trudno się niezgodzić, że RC miał lepszą jakość. Niestety, jak pisałem, za dużo czasu zajmowało przygotowanie jednego odcinka.
Ad poziom merytoryczny - zauważyłem, że częściej błędy się zdarzają (np. z flagą PF która dotyczy tylko 8-bitów, etc). Wynika to z tego, że przed RC zazwyczaj sprawdzałem wszystko dwa razy, natomiast teraz jadę w zasadzie z pamięci.

@olo16
Jeśli kurs osdev dojdzie do skutku, to w zasadzie jako takie rozumienie komputera będzie wymagane, oraz trochę assembly i C. Raczej skupie się na detalach implementacyjnych - struktury danych i algorytmy używane w OSach są na różnych uniwerkach dobrze omawiane i przypuszczam, że łatwo znaleźć jakieś wykłady z tego.

Ad debugowanie - ta, słuszny pomysł. Chociaż będzie to w zasadzie powtórzenie części Poradnika Początkującego Programisty (tej o rozwiązywaniu problemów). Niemniej jednak, to coś co by się pewnie przydało kilku osobom.
O Heisenbugs też by można powiedzieć. W sumie z mojego doświadczenia wynika, że w 80% przypadków to heap corruption, a w 19% race cond...

@Karton
Patrz Poradnik Początkującego Programisty, część o rozwiązywaniu problemów - jest tam kilka metod które osobiście stosuje.

@Sebaa
Nie wykluczam takiej możliwości. Ale nawet jeśli, to będą to dużo krótsze odcinki (max 50 minut).

@zuo
Nie - z tego samego powodu dla którego wymieniłem RC na videocasty nagrywane "z doskoku" - zajmowałoby mi to za dużo czasu (którego niestety za dużo na tego typu projekty nie mam).
}
2011-05-15 08:02:00 = Gynvael Coldwind
{
@o
Nie przesadzaj z generalizacją.
Ad meritum, przypomina mi się efekt Krugera-Dunninga (http://pl.wikipedia.org/wiki/Efekt_Krugera-Dunninga).
Ad techniki, etc - hmm, słuszna uwaga. Muszę pamiętać, żeby starać się podawać autorów danych technik o ile to jest możliwe - przy czym sporo z nich jest w public domain na tyle długo, że odnalezienie org. autorów / publikacji może być trudne.

@ajem
Your missing the point imho.
Owszem, część wiedzy podaje na tacy, ale nie widzę w tym nic złego - jeśli dana osoba ograniczy się tylko np. do moich videotutorków, jednocześnie nic nie pisząc samemu, etc, to raczej jest to stracony czas (ofc z wyłączeniem przypadków w których ktoś się tym interesuje for fun, a nie "na poważnie"). Więc, dana osoba musi włożyć w to sporo energi i tak, a to jest właśnie "uczenie się samemu".
Poza tym, czym szybciej nowe osoby przyswoją sobie wiedzę do granic current state-of-art, tym szybciej będą mogły zaangażować się w poszerzanie granic state-of-art (na czym nam ogólnie powinno zależeć). Więc imo "the point" brzmi tutaj: stworzyć materiały edukacyjne z jak najlepszą krzywą uczenia (biorąc pod uwagę tradeoffy typu 'czas poświęcony na to' niestety).
}
2011-05-17 17:27:49 = Joachim726
{
Rozumiem, że w tych nowych videoartach, nie będziesz mówił już o RE?
Ps.Kurs Asm'a jest w jakiej składni?
}
2011-05-17 20:45:33 = Gynvael Coldwind
{
@Joachim726
O RE jeszcze będzie, po kursie assembly do tego wrócę.
Kurs asma jest o składni Intel'a, konkretniej nasm. Przy czym składnia to drugorzędna sprawa jeśli chodzi o assembler.
}
2011-05-23 22:52:29 = Hooch
{
witam
mam pytanie dotczące reverse Craft
wiem że seria jest już porzucona ale jednak ja chcę to przerobić do końca.
Stanąłem na tutorialu nr 4 na robieniu dumpa.
W Olly 2.0 nie widzę nigdzie opcji do robienia dumpa.
Lord PE nie pokazuje mi połowy procesów, w tym crack me.
próbowałem programem PE Tools 1.5 ale dump nie chciał się uruchomić ani przed ani po naprawieniu inportów. Utknołem. Wiele godzin spędziełem na przeszukiwani google ale nic nie pomogło.
Będe bardzo wdzięczny za pomoc
Pozdrawiam Maciej K.
}
2011-05-29 15:34:26 = joachim726
{
Fajnie, że będzie o RE, tylko ile z tej wiedzy, mogę wykożystac pod Linux'em?
W ogóle to wielkie dzięki, że masz i chęci i siły aby kręcic :)
}

Add a comment:

Nick:
URL (optional):
Math captcha: 8 ∗ 1 + 5 =