Od lamera do hakera/Wstęp
Polecamy najpierw zapoznać się z tym dokumentem: http://www.mkgajwer.jgora.net/ers.html
Nie,Nie, to nie jest kolejny artykuł w którym opowiada się o hakerstwie w sposób żartobliwy. Tutaj znajdziesz kilka przydatnych informacji do tego, by zostać w hakerem w sensie zdolności informatycznych. A Haker powinien poznać:
- Język angielski, w szczególności techniczny
- Parę języków programowania (w tym najpopularniejsze jak C++ i Python)
- Systemy operacyjne, w szczególności Linuksa (dobry na początek może być Ubuntu czy Linux Mint).
- Oraz oczywiście internet.
Warto też zaznaczyć, że dobry informatyk potrafi korzystać z właściwych narzędzi do odpowiednich zadań. Sam korzystam z vi/emacs/visual studio/ms-word. Gdy musisz coś zrobić w 5 minut, bo jest awaria/backup/dizaster, to nie masz czasu zastanawiać się za pomocą czego to zrobisz tylko robisz. Jak mam przez konsolę zamienić na starym unixie skomplikowany fragment tekstu na inny w wielu miejscach w wielu plikach - używam emacsa, jak mam szybko wyedytować plik konfiguracyjny albo przeanalizować dane w xml, albo jak nie ma emacsa - używam vi. Jak mam do czynienia z xmlem na windowsie, to korzystam z internet explorera, notepad++, albo visual studio - idealnie robi preety print i sprawdza składnię bez żadnych dodatkowych pluginów. Jak mam robić konspekt - znowu emacs - org-mode, jak chcę skorzystać z shella to po prostu z niego korzystam - czy to bash, czy Powershell, czy csh. Minęły czasy gdy były dwa edytory plus trzeci nieużywany. Coraz więcej programów ma alternatywy lepsze lub gorsze w konkretnych zadaniach. O wiele ważniejsze od perfekcyjnej znajomości jednego z nich jest znajomość co najmniej funkcjonalności innych, żeby w razie potrzeby szybko z nich móc skorzystać. Od tego zależą zarobki (niemałe), u niektórych od tego zależy również życie rodziny. Fajnie jest się zamknąć w bezpiecznym zintegrowanym środowisku prawda? Też to lubię, ale niestety rzeczywistość it dąży w zupełnie innym kierunku. Różnorodności i niespójności. Dobry informatyk umie się w tym chaosie swobodnie poruszać. Czy to na macu, czy na linuxie, czy na windzie… Wygra ten kto potrafi się szybciej przystosować. W dzisiejszych czasach decydują sekundy. Osobiście mogę lubić np. vim, ale żeby go nie znienanawidzić korzystam również z innych narzędzi w zależności od potrzeb.
Język
[edytuj]Jak wiadomo, język angielski to język światowy - niektórzy uważają wręcz że stal się uniwersalnym językiem ludzkim. Prawda, jak wielkie znaczenie się mu przypisuje?
Język angielski jest językiem roboczym internetu - praktycznie każda większa dokumentacja techniczna jest pisania w tym języku (nieprzetłumaczona na żaden inny, chyba że ktoś będzie uparty ;) ). Występuje w Językach programowania, komunikaty systemu operacyjnego są po angielsku, Angielska Wikipedia ma więcej haseł niż Polska... Angielski jest wszędzie! A z początku, wydawało by się że żadna lingwistyka nie jest potrzebna. A dlaczego akurat angielski? angielski ma bogatsze słownictwo techniczne niż jakikolwiek inny język i dlatego jest prostszym i lepszym narzędziem w pracy.
Angielski powinno się znać na poziomie przynajmniej funkcjonalnym/komunikatywnym. Dlatego jeśli znasz go na poziomie podstawowym, zalecam douczenie się go.
Systemy Operacyjne
[edytuj]Pierwszym krokiem w kierunku komputerów będzie przede wszystkim system operacyjny - w końcu działamy w nim na co dzień.
Zazwyczaj pierwszy system z jakim się spotykamy to Microsoft Windows NT czyli od XP do 7 wzwyż. System ten nie jest jednak dostosowany do pracy hakera, tzn. nie zawiera domyślnie nawet tak podstawowego narzędzia jak kompilator czy użyteczny dla zastosowań programistycznych edytor tekstu. Oczywiście można je doinstalować, ale główny problem leży także gdzie indziej. Systemy Microsoft są podatne w znacznej mierze na ataki, ostatnio dotarło także także do warstw opinii publicznej, że są także podatne na szpiegowanie (głównie z powodu [[w:en:PRISM|]) co najmniej od 2008 roku. Słowem - Wkrótce będziesz musiał zrezygnować z tego narzędzia.
Na co się przesiąść? Istnieje wiele różnych systemów operacyjnych, z czego wymienia się przede wszystkim Linux i BSD. Mac Os X również nie wchodzi w grę, który jest podobnie jak Windows, dostosowany do masowego rynku.
Programowanie
[edytuj]Wszystkie niezbędne informacje znajdziesz w książce powyżej. W tej części omówię tylko kilka aspektów wyboru swojego pierwszego języka.
Jeśli nigdy w życiu nie programowałeś (a tak jest w wypadku nowicjuszy a może nawet tytułowych lamerów) to zalecam przejście do przejrzenia strony prakycznej w spisie treści. W zależności od którego programowania chcesz zacząć - webmasterkiego czy aplikacji - zacznij z wyżej podanym.
Jeśli to webmasterka to zaczynamy z HTML, CSS, JS. Potem możemy się zorientować że bazując na stronach wyłącznie na ww. technologiach zauważymy że są nieefektywne - brakuje im, czegoś co możnaby łatwo posortować. Tutaj już wkraczają bazy danych, czyli nauka PHP SQL plus jakiś technologii internetowych jak forum, CMS itd. z racji tego że strona jest wolnościowa, zaleca ona wykorzystanie oprogramowania Open Source. Oczywiście na samych projektach wykorzystujących wyłącznie oprogramowanie GNU można zarobić (nawet jeśli byłby to zwykły blog na wordpress) ale rynek pracy okazuje też nieco inny i będą wymagać też aplikacji płatnych, nie wolnodostępnych np. Flash, drupal, różnorodne API. Trzeba śledzić trendy.
Jeśli chodzi zaś o programowanie na jeszcze większym poziomie, czytaj tworzenie aplikacji internetowych, lub potem nawet na komputery - będziemy już musieli wybrać. W web'dev o tyle dobre jest to, że standardy technologiczne się nie zmieniają i nie trzeba tworzyć w tym celu nowych języków, podobnie jak było w latach 90-tych gdzie programowało się głównie w BASIC lub asembler. Wybór nie był trudny. Teraz, kiedy dialektów jest więcej, nikt nie wie od czego zacząć.
Na wielu forach, usenet, IRC zdecydowanie padają różne skrajne propozycje, od dedukcyjnych czyli rozpoczęcie od Pythona kończąc na asemblerze i odwrotnie. Autor preferuje w tym wypadku naukę dedukcyjną - zaczynając z C++ przestraszyłem się "potworków" w tym języku gdyż nie miałem wyrobionego myślenia programistycznego i zaczynam od prostszych. W każdym razie na jakimkolwiek nie zaczniesz i nie skończysz, wyjdzie Ci to na dobre, ponieważ tak naprawdę nie chodzi o wybór języka w którym się zamkniemy tylko właśnie o pisanie w wielu różnych, by wyrobić sobie owe myślenie, potrafić przetwarzać algorytm (pomysł) na kod.
- Pomysł - zrobię grę tekstową!
- Algorytm - gra będzie miała zapis i wczytanie (możemy tak pomyśleć, jeśli już to potrafimy zrobić, w przeciwnym wypadku musimy wszystko sobie doprecyzować), tu se walne punkty, a tu ślepe zaułki (fabuła)
- Kod - pritnf = "Witaj w cebulolandii! Wybierz rasę"; Switch {pierwsza opcja, druga opcja ...}