Wiem, że może to zabrzmieć trochę niejasno, więc postaram się wyjaśnić trochę dalej ...
Po wielu latach pracy na własny rachunek jako programista poszukuję roli programisty komercyjnego. Moje jedyne doświadczenie z serwerami i hostingiem to przesyłanie przez FTP i trochę zabawy z CPanel / WHM. Rola, którą zamierzam, to role programistyczne PHP, MySQL, HTML, CSS, ale w ostatnich wywiadach zadawano mi pytania dotyczące konfigurowania rzeczy na serwerze, że nie miałem pojęcia, co się mówi ... co nie było idealne!
Nie wiedząc więcej niż ja, trudno wyjaśnić, czego dokładnie chcę się nauczyć, ale w zasadzie to tylko elementy serwera, które powinienem znać jako programista stron internetowych? Jeśli jesteś programistą internetowym, czy zajmujesz się serwerem poza przesyłaniem plików, a jeśli tak, to co? Czy rzeczy takie jak Subversion (SVN) i systemy kontroli wersji są często konfigurowane przez zespół programistów, czy o tym mówili?
not a very valuable web developer
to jest to, co staram się przezwyciężyć, więc cieszę się, że mogę się o tym właściwie uczyć, po prostu nie wiem, jak najlepiej przejść się do tej nauki i na jakich obszarach skupić się najpierw.Odpowiedzi:
Jest to duży zestaw pytań, ale podejrzewam, że wiele osób musi się z nimi zmierzyć, zwłaszcza gdy zaczynają robić postępy w karierze, która zaczęła się od koncentracji.
Wspominasz, że wybierasz się do roli obejmującej programowanie w PHP i MySQL. Są to rzeczy, które należy wykonać na serwerze. Umiejętność dokonywania trafnych osądów technicznych jako programista wymaga zrozumienia, jak te rzeczy działają na serwerze i jak współdziałają z interfejsem WWW. Tak więc, musisz wyraźnie zrozumieć serwer.
Zamiast próbować dowiedzieć się dokładnie, czego możesz potrzebować na temat serwera, zaleciłbym nurkowanie i budowanie czegoś, w tym samodzielne instalowanie całego oprogramowania po stronie serwera. Świetnym sposobem na zmoczenie stóp jest zainstalowanie Linuksa na komputerze. Możesz użyć czegoś takiego jak VirtualBox, aby pozwolić mu działać razem z bieżącym systemem operacyjnym. Zainstaluj MySQL, zainstaluj i skonfiguruj serwer dla PHP i postaraj się, aby wszystko działało razem. Wspaniałą rzeczą jest, że w dzisiejszych czasach średnio dobrze wyposażony laptop może to wszystko uruchomić i być „serwerem”.Na początku może to być trudne, szczególnie jeśli nie masz doświadczenia w korzystaniu z Linuksa i wiersza poleceń. Jako programista powinieneś przynajmniej wiedzieć wystarczająco dużo, aby móc przejść przez to ćwiczenie, a to pozwoli ci szybko dowiedzieć się, jak pogłębić swoją wiedzę.
Istnieją trzy obszary, w których prawdopodobnie będziesz musiał przyspieszyć:
Jeśli chcesz skorzystać z Ubuntu, możesz postępować zgodnie z podstawowymi instrukcjami tutaj, aby rozpocząć pracę. Uwaga: przed rozpoczęciem instalacji i grania z serwerami WWW / komponentami bazy danych trzeba będzie sporo rozwinąć podstawy Linuksa.
Jeśli chodzi o sposób, w jaki programiści muszą wchodzić w interakcje z serwerem, poza przesyłaniem plików, myślę, że jest to bardzo różne w zależności od organizacji.
Chodzi o to, że nie ma jednej odpowiedzi na pytanie, w jaki sposób będziesz musiał dotknąć serwera, ale w trakcie swojej kariery z pewnością wykroczy on poza przesyłanie plików za pośrednictwem FTP. Rozpoczęcie nauki od podstaw teraz pomoże.
źródło
Moja pierwsza rada: nie ograniczaj się wyłącznie do jednej roli. Wspaniale jest być specjalistą i mieć głęboką wiedzę na temat określonego zestawu umiejętności (na przykład PHP). Jednak równie ważne jest posiadanie szerokiej wiedzy, która obejmuje całą resztę domeny.
Z mojego doświadczenia wynika, że większość zespołów nie chce zatrudnić kogoś, kto ma wiedzę, aby przepisać podstawową funkcjonalność PHP, ale raczej kogoś, kto poradzi sobie z każdym problemem, który zostanie im zgłoszony (chociaż posiadanie takiego poziomu wiedzy z pewnością nie zaszkodzi). Lub przynajmniej ktoś, kto może pomóc rozwiązać wszelkie problemy napotkane przez zespół. Wyobraź sobie na przykład sytuację, w której aplikacja przestaje działać i dotyczy to klientów. Możesz albo podnieść ręce i powiedzieć „Nie mam pojęcia, co robić ...”, albo SSH na serwer, rozpocząć skanowanie dzienników, zauważyć, że przestrzeń dyskowa określonego systemu plików jest pełna i przystąpić do jej wyczyszczenia. To niewielki przykład, ale myślę, że sprawa jest jasna. Dzięki tej podstawowej wiedzy, jako programista, możesz napisać skrypt, który monitoruje ten konkretny system plików i czyści go, gdy osiągnie określony próg. Stałeś się teraz o wiele bardziej wartościowy dla swojego menedżera.
Kolejną rzeczą, której nauczyłem się podczas mojej kariery, jest to, że wszystko idzie szybko i jeśli nie nadążasz, zostaniesz w tyle. Im więcej wiesz o całym środowisku (w tym o aspektach biznesowych), tym lepiej. Nie oznacza to, że musisz być ekspertem we wszystkim, co robisz, ale przynajmniej posiadaj wiedzę, aby nie być oznaczonym jako nieświadomy. Im bardziej jesteś zaznajomiony, tym lepiej się dostosowujesz, a tym bardziej cenny jest Twój atut dla Twojej firmy.
Aby dokładnie odpowiedzieć na pytania ...
Zapoznaj się z całym stosem aplikacji. Dowiedz się, jakiego serwera, bazy danych, mechanizmów buforowania itp. Używasz. I które wersje też. Posiadaj wystarczającą wiedzę, że możesz odtworzyć środowisko na własnym serwerze. Co samo w sobie jest niezwykle ważne. Powinieneś dążyć do tego, aby mniej więcej mieć takie same środowiska w fazie projektowania i produkcji, ponieważ zmniejsza to niespodzianki ( http://12factor.net/dev-prod-parity ).
To naprawdę zależy od zespołu. W moim szczególnym przypadku programiści odgrywają ogromną rolę w przygotowaniu środowiska. Jesteśmy najbardziej zaznajomieni z wewnętrznym działaniem aplikacji i dlatego jesteśmy w stanie najlepiej określić, jakie technologie serwerowe są w stanie ją uruchomić. Wyobrażam sobie, że nie wszystkie zespoły mają takie praktyczne podejście, ale posiadanie wystarczającej wiedzy, aby móc zaangażować się w dyskusje, jest wielką zaletą. W szczególności, jeśli chodzi o kontrolę wersji, to jako programista masz duży wpływ na to, która technologia zostanie wybrana (Git, Subversion, Mercurial itp.), I dlatego powinieneś starać się zaangażować w proces decyzyjny.
I co teraz?
Co do mojej sugestii, jak najlepiej podejść do nauki tego wszystkiego? Poruszaj stopami . Nie martw się, że spróbujesz przeczytać wszystko, co możesz na ten temat, większość z nich prawdopodobnie po prostu wycieknie z twojego mózgu, zanim skończysz. Zamiast tego zacznij opracowywać coś od podstaw. Zacznij od Vagrant ; pozwoli ci łatwo stworzyć maszynę wirtualną i zarządzać nią, którą możesz wykorzystać jako nowy plac zabaw. Następnie zainstaluj serwer WWW i bazę danych i zacznij tworzyć. Jeśli masz pomysł na aplikację, idealna, wybierz ją ... jeśli nie, znajdź samouczek lub spróbuj odtworzyć istniejącą aplikację. Chodzi o to, aby zapoznać się z całym procesem. Jako programista PHP koniecznie sprawdź PHP: The Right Way... naprawdę zawiera wiele doskonałych informacji. A co najważniejsze, nie stresuj się. Wyobrażam sobie, że podążałeś ścieżką programisty, ponieważ jest to coś, co sprawia ci przyjemność i jest pasjonatem ... nie trać tego z oczu!
źródło
Koncentrując się na Co musisz wiedzieć o serwerach, aby być programistą WWW? ...
Właściwie zaskakująco mało. Twoje główne obszary wiedzy powinny obejmować programowanie, HTML, php itp.
Musisz wiedzieć, jak uruchamiać rzeczy lokalnie, a kiedy to robisz, używasz swojego urządzenia jako „serwera”. Więc podczas uruchamiania lokalnego używasz przeglądarki internetowej, aby przeglądać strony, tak jak w przypadku każdej strony internetowej ... z wyjątkiem twojej
http://localhost
lubhttp://127.0.0.1
Jeśli chodzi o konfigurację cgi, http itp. Nie oczekuję, że musisz to wiedzieć. Zawsze możesz przeczytać dowolną ogólną książkę na temat konfigurowania serwera WWW dla systemu operacyjnego, w którym pracujesz, i to wystarczyłoby, aby poznać ogólne warunki.
Dla większego obrazu zalecam wejście do Linuksa i nauczenie się, jak konfigurować i konfigurować maszyny, takie jak serwery WWW. Ale tylko jeśli naprawdę interesujesz się tym. Nie tylko po to, by zaimponować w wywiadach.
Na koniec zalecam rozważenie podczas wywiadów notatek na temat obszarów, o których nie wiesz wystarczająco dużo. Pomogłoby to, gdyby twoje pytanie było bardziej szczegółowe na temat tego, które warunki itp. Nie znasz.
źródło
Musisz wiedzieć poniżej, aby ukończyć cykl tworzenia stron internetowych.
1) IDE (Netbeans i Eclipse itp.)
2) Dowolny język programowania do kodowania. (PHP, Java, itp.)
3) Frontowa technologia do projektowania stron (HTML, CSS itp.)
4) Kopia zapasowa bazy danych do przechowywania i pobierania danych. (MySQL itp.)
3) System kontroli wersji do sprawdzania i pobierania repozytorium kodu.
4) narzędzie do kompilacji kodu z plikami zależnymi. (Ant, Maven)
6) Serwer WWW do wdrożenia i uruchomienia kodu.
7) Musisz znać podstawowy proces wdrażania na serwerach, aby uruchomić i przetestować komponent web i ejb. (Tomcat, serwer Web-Logic)
źródło
Oprócz odpowiedzi DemetriKots dodam również spojrzenie na rozwiązania do automatycznego wdrażania i ciągłej integracji. Wstępne skonfigurowanie serwera to tylko jeden krok, a wdrożenie przez FTP jest bolesne i podatne na błędy, bez odpowiedniego rozwiązania dla wycofywania złych wdrożeń.
źródło