메뉴 건너뛰기

2017.04.13 02:55

책을 마치며

조회 수 491 댓글 7

이해하기 쉽게 배울 수 있었던 것 같아서 좋습니다.

노고에 감사드립니다.

마지막으로 궁금한것이 있습니다.

 

 

사이트 제작을 하려고 합니다.

웹사이트의 제작과정을 처음부터 끝까지 알고 싶습니다. 

그리고 무엇을 더 배워야 하는지 궁금합니다.

 

html과 css를 통해서 사이트 자체를 구축하는 것은 그리 어렵지 않은 일이라고 생각합니다.

다만, 제 목표는 웹사이트를 만들어서 SaaS(Software as a Service)를 제공하려 합니다.

로그인을 한 사람의 정보를 저장하는 곳은 어디인가요?

아이디와 비밀번호, 그사람들이 쓴 글들, 그사람이 작성한 목록들을 저장하는 것은

로컬스토리지가 전부인가요?

개인정보의 보호는 어떻게 이뤄질 수 있는건가요?

결제시스템은 어떻게 사용할 수 있을까요?

쇼핑몰과 비슷한 사이트를 만든다고 가정한다면 , 넷플릭스와 비슷한 사이트를 만든다고 가정한다면,

개개인의 정보를 저장하는 곳은 어디인가요?

금액별로 권한을 나눠서 제공하는 것은 어떤것이며 무엇을 배워야 할까요?

전체적인 내용이 궁금합니다. 부탁드립니다 꼭좀 알려주시면 감사하겠습니다.

?
  • ?
    황기태 2017.04.13 10:55
    독학을 시작한지 1달도 되지 않아 웹프로그래밍 공부를 마치다니, 대단합니다.
    이 책은 클라이언트 웹 프로그램을 다루는 책입니다. HTML, CSS, 자바스크립트로 웹 페이지를 작성에 관한 것입니다.
    웹 페이지드로만 구성된 웹 사이트를 만들려면 이 책에서 다루는 것에 웹 서버 설치만 배우면 가능합니다.
    하지만, 질문과 같이 로그인, 결제, 온라인 비디오 등의 서비스를 만들려고 하면, 웹 서버 프로그래밍을 배워야 합니다.
    로그인 웹 페이지에서 입력한 정보를 웹 서버에 만들어둔 웹 서버 응용프로그램이 서버 컴퓨터의 하드디스크에 저장하는 기능이 필요하지요.
    제 책의 1장에서 p.35에 있는 그림 1-6은 사이트의 모양을 보여 줍니다. 다시 한번 그림 1-6을 보세요.
    서비스를 갖춘 웹 사이트를 구축하려면, 은성님은 웹 서버 응용프로그램의 작성에 대해서 공부할 필요가 있습니다.
    그리고 로컬스토리지는 웹 브라우저에 정보를 저장해두고 여러 웹 페이지끼리 공유하거나 웹 서버에 데이터를 보내고가지고 오는 트래픽을 줄이기 위한 목적입니다.
    아이디, 비밀번호, 작성글 등은 모두 웹 서버의 데이터베이스에 저장해두어야 합니다(그림 1-6).
    보통 결제 시스템은 웹 서버와 연동되어 돌아가는 결제 시스템이 따로 필요합니다.
    이런 시스템은 바닥부터 개발하는 것에는 개발자의 시간이 너무 많이 걸리고
    한계도 있습니다.
    그러므로 자신이 개발하고자 하는 서비스 사이트를 쉽게 만들 수 있는 웹 사이트 저작 도구(프로그램)을 이용하는 것이
    일반적입니다. 물론 이 프로그램을 활용하여 사이트 제작하고 그곳에 자신이 원하는 기능을 고치거나 직접 추가 구현해야 합니다.
    웹 페이지에도 손 볼 것이 많겠지요.

    정리하면 웹 사이트를만들려면 웹 서버와 웹 서버 응용프로그램(JSP, 자바, PHP, Python 등) 작성 공부를 해야 하고, 웹 서버(예를 들면 아파치)의 동작이나
    설치에 관한 공부를 하고, 웹 사이트 제작 프로그램을 활용하여 제작합니다.
    결제 등과 같은 것은 아마 유료로 제공해주는 사이트를 연계하여 처리해야 할 것입니다.
  • ?
    은성 2017.04.13 15:02
    상세한 답변 진심으로 감사드립니다! 몇가지만 더 여쭙겠습니다.
    질문 많은 학생이라 죄송합니다!


    1. 웹사이트를 제작한 후에는 호스팅서비스를 이용하려고 합니다. 호스팅 서비스가 제공하는 것이 웹 서버라고 알고 있습니다.
    이때도 웹서버(아파치 등)의 동작이나 설치에 관한 공부가 필요한가요?

    2. 책에서 배웠던 것처럼 로그인 폼 등 소위 껍데기들은 현재 배운것으로 제작한 다음, "웹 서버 응용프로그램"으로 연동?같은 개념으로 이어주는 것인가요?
    (css는 <style>을 사용하고, javascript는 <script>를 사용 하는 것처럼)
    아니면 "웹 서버 응용프로그램"을 따로 만들어서 외부 css나 자바스크립트를 불러오는 것처럼 기존 html파일에 링크를 거는 방식인가요?

    3. 웹 서버에 저장되는 개인정보등의 보안은 호스팅을 해주는 업체 담당인 건가요?

    4. html을 배우면서 type="submit"일 때, 어디로 양식을 제출하는 지에 대해 늘 궁금했습니다.
    로그인 폼이라고 가정하고, 로그인 버튼 타입이 submit일 때 호스팅만 되어 있다면
    누구나 손쉽게 회원 가입, 로그인 등이 가능한 건가요? 아니면 말씀대로 ( type="submit") 이것 역시 웹서버 응용프로그램을 배우기 전 단계에 불과한 것인가요?

    5. 그리고 마지막으로 배워야할 것이 jsp,자바,php,python등 이라고 해주셨는데 어떤것이 더 괜찮은지 추천해 주실 수 있을까요? 순서라든지..책이라든지..
    물론 혼자 찾아봐서 공부하여도 괜찮지만 선생님의 추천을 듣고 싶습니다.
  • profile
    관리자 2017.04.14 01:09

    ㅋㅋ열정이 정말 대단하시네요~ 제가 교수님 답변을 좀더 보완해드리겠습니다.
    내용을 자세히 적으려면 정말 한도 끝도 없게되니까.. 질문에 대한 핵심내용만 적도록 하겠습니다.

    1. 사설 업체로부터 웹 호스팅을 하는 것은 사실 커다란 하나의 서버를 여러 사용자가 각자의 구역을 할당받아 사용하는 것 입니다. 서버를 통째로 빌리는 것이 아니라 말이죠. 보통의 경우 웹 호스팅을 신청하여 내 공간을 할당받으면 그 즉시 사용할 수 있도록 여러 설정이 미리 세팅되어 있으며 사용자 측에서는 임의로 수정할 수 없습니다. 따라서 웹 호스팅을 하는 경우 아파치나 톰캣 등 프로그램에 대해 전혀 무지한 상태에서도 내가 할당받은 가상 공간에 파일을 가져다 두기만 하면 그 즉시 온라인 상에서 접근이 가능한 문서가 됩니다.

    반면, 서버 호스팅을 신청하게 되면 말 그대로 가상의 서버 컴퓨터를 통째로 한대 빌리게 되는 것 이므로 정말 컴퓨터에 웹 서버를 구축하듯 아파치를 설치하고 서버 운용에 필요한 관련 프로퍼티들을 관리자가 직접 관리해야합니다. 따라서 이 경우에는 아파치를 공부하셔야 합니다. 추가로, 서버 호스팅을 하게되면 아파치 뿐 아니라 수많은 유틸리티 프로그램과 OS 명령어에 대한 지식이 필요합니다. (심지어 고급 개발자들은 서버가 최적 성능을 발휘 할 수 있도록 OS를 직접 튜닝하여 사용하기도 합니다.)

    2. 전자가 맞습니다. 즉 html로 클라이언트에게 제공할 UI를 구성하고, form의 action 프로퍼티에 해당 작업을 처리할 응용을 만들어 연결합니다. 그 응용은 서버에 저장되어 있어야 겠죠. 예를 들어 로그인 폼을 구성했다고 생각하면

     

    <form ...(프로퍼티들) action="login.jsp">

    ...(폼 요소들)

    </form>

     

    와 같이 말이죠. 책에서 배운 내용과 같습니다. 그러나 보통 서버와 통신을 하는 웹 페이지를 작성하기 위해서는 jsp, php, asp 등의 언어로 쓰여진 웹 문서를 작성합니다. 이 경우 웹문서들은 document.jsp, document.php 와 같은 이름을 가지겠죠.

    3. 개인정보 관리에 대한 책임은 전적으로 본인에게 있습니다.

    4. 2번에서도 살짝 언급했지만, submit 버튼은 단순히 action에 설정한 웹 서버의 응용으로 폼 요소의 데이터를 보내는 일만 수행할 뿐 그 외의 기능은 아무것도 없습니다. 눈 앞에서 회원 가입 기능이 돌아가는 것을 확인하려면

    1) 웹 호스팅 or 서버 호스팅 or 컴퓨터 직접 준비
    2) 웹 서버 구축 (웹 호스팅 시엔 필요 없습니다.)
    3) 데이터베이스 구축(oracle이나 mySQL 혹은 phpmyadmin과 같은 dbms 설치)
    4) 클라이언트에 보여줄 화면 구성 (폼 요소 배치 등등)
    5) 클라이언트에서 submit을 통해 보내온 데이터를 처리해줄 웹 서버 응용 작성 (이 때 웹 서버는 DB와 연동이 되어야 함)

    와 같은 절차를 거쳐야 합니다.

    6. 사실 서버를 관리하기 위해 필요한 지식은 정말정말정말(x100) 광범위 합니다. 많이 공부하면 공부할수록 스킬도 늘어나고, 여러 메커니즘에 대한 이해도도 높아지게 되죠. 아는만큼 보인다고 하잖아요? 또한 모든 지식이 서로 꼬리에 꼬리를 물고 얽혀있기 때문에 사실상 제대로 된 테크트리를 타기 위해선 C언어부터 시작해야 할지도 모릅니다.. 예를 들어서 jsp를 해보시면 알겠지만 자바 코드가 거의 절반을 차지하기 때문에 자바가 필수적으로 선행되어야 합니다. 자바또한 C/C++의 문법들을 기반으로 탄생한 언어이기 때문에 C/C++에 대한 공부도 필요하고, OOP(객체지향 프로그래밍)에 대한 감도 익혀야 합니다. 또한 서버의 OS도 윈도우 뿐 아니라 UNIX 기반의 여러 OS들도 주로 쓰이기 때문에(사실 윈도우보다 더많이 쓰입니다) OS에 대한 지식도 필요하고, 이것도 제대로 공부하려면 먼저 컴퓨터 아키텍쳐를 공부해야 하죠(이것도 논리회로가 선행되어야 합니다). 여기가 끝이 아니라 이 후에 웹 확장 기술인 제이쿼리, JSON, XML와 오픈소스에 관련된 스프링, GIT 등에 대한 지식도 갖추어져야 비로소 서버를 제대로 관리할 수 있는 준비가 되었다 할 수 있습니다..

     

    정말 엄청나죠?

    시간이 부족하다, 대중적이고 꼭 필요한 내용만 공부하고 싶다 하면 본 책을 한번 더 정독, 복습하신 이후 java를 공부하세요. 그 다음 웹 서버 프로그래밍 언어인 jsp를 공부하세요. 책의 추천은 저도 아직 학생이라 뭐가 좋다고 콕 찝어서 말하기가 좀 그렇네요..ㅎ

    파이팅입니다!!

  • ?
    은성 2017.04.17 14:35
    와 정말 진심으로 감사드립니다! 궁금했던 것들 대부분이 해결 됐습니다!!
    정말 범위가 넓네요
    그래서 그런지 의지가 더 불타오릅니다 ㅎㅎ!
    상세하게 답변해 주셔서 진심으로 감사드립니다.
    그리고 질문 많은 학생이 하나만 더 여쭙겠습니다!
    웹 서버는 데이터 베이스와 연동이 되어야 한다고 말씀해 주셨는데,
    그 부분은 호스팅 업체에서 제공해주는 부분 중 하나인 것인가요?(오라클등)
    아니면 공부하여 제가 직접 구축을 해야하는 것인가요?
    호스팅 업체에서 제공을 해준다고 한다면 그 분야에 대한 공부는 나중으로 미뤄도 괜찮을까요?
    제가 직접 구축을 해야한다는 의미는 dbms를 설치만 하면 된다는 것인가요?
    그리고 웹서버와 DB의 연동은 어떻게 이룰 수 있을까요?
  • ?
    황기태 2017.04.17 16:20

    호스팅 업체는 개발자가 만든 웹 페이지를 저장하고 관리하는 컴퓨터를 빌려주고
    돈을 받는 기업입니다. 그러니까 웹 사이트를 운영하려는 개발자는 자신의 컴퓨터 없이도 호스팅 업체의 것을 빌려 사용하면 됩니다.

    이 빌린다는 개념은 개발자의 집으로 가져온다는 뜻이 아니라, 호스팅 업체에 두고 빌려 쓰는 것입니다.

    정전이 되었다고 할지라고 호스팅 업체에서 UPS(무정전 파워 장치)를 사용하기 때문에 일시적인 정전 등으로부터 웹 사이트라 중단되는 일을 없습니다.

    또한 웹 호스팅 업체는 외부에서 웹 사이트에 접근하는 트래픽이나 잘못된 해킹 접근을 부분적으로 차단 관리하는 일을 대행합니다.
    개발자가 데이터베이스를 가지든 않든 관여하지 않습니다.
    개발자가 직접 데이터베이스를 선택하고 설치하고 웹 서버 응용프로그램이 데이터베이스(정확히 말하면 DBMS)에 접근하는 프로그램을 작성해야 하는 것입니다.
    데이터베이스에게 데이터를 저장하고 검색을 요청하는 등의 작업은 모두 개발자가 프로그래밍을 해야 합니다.

  • ?
    은성 2017.04.17 16:53
    답변 감사드립니다.
    조금 이해하기 어렵긴 하지만 도움주셔서 진심으로 감사드립니다^^!
    아 참, 573p
    타이머를 가진 워커 태스크 예제 13-9에 오타가 있는것으로 보여집니다.

    timer.js

    var count=0;
    var timerID=null;

    onmessage = function(e){
    if(e.data == "start"){
    if(timerID != null)
    return;
    intervalID = setInterval(myCallback, 1000);
    }
    else if (e.data == "stop"){
    if(timerID == null)
    return;
    clearInterval(timerID);
    close();
    }
    }

    위 소스코드 8행에서,
    intervalID = setInterval(myCallback, 1000); 가 아닌
    timerID = setInterval(myCallback, 1000); 으로 되어야 하는것 아닌가요?

    if(timerID==null) return; 부분에서,
    전역 변수로 선언된 timerID의 값은 타이머가 시작 되어도 null로,
    변함이 없기 때문에
    stop하여도 타이머가 멈추지 않을 것 같습니다.
  • ?
    황기태 2017.04.17 17:07
    그렇네요.
    오타 발견 감사드립니다.
    intervalID가 timerID로 바꾸어야 합니다.

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.21 18175
222 비정형 표 질문 file ㅇㅇ 2020.04.08 187
221 ; 가 쓰일 때를 여쭙고 싶습니다 2 file 입문한 사람 2020.04.07 139
220 따옴표를 4중 5중으로 사용하는 방법에 대해 여쭙고 싶습니다. 입문한 사람 2020.04.07 40
219 SRC와 SRDOC의 차이를 여쭙고 싶습니다. 입문한 사람 2020.04.07 48
218 선생님 정말 고맙습니다 재질문도 드리고 싶습니다 file 입문한 사람 2020.04.07 137
217 표와 div span 4 키보드 향기 2020.04.05 108
216 목록을 한줄로 나란하게 만드는 법 질문드립니다 3 file 입문한 사람 2020.04.04 260
215 div 와 pre 중에서 어떤 게 더 상위에 위치하나요? 1 file 입문한사람 2020.04.03 751
214 코드 잘못된 부분을 봐주시면 정말 감사하겠습니다 1 file 입문한 사람 2020.04.01 604
213 ; 에 대해 질문드립니다 1 입문한 사람 2020.04.01 85
212 2장 오픈 챌린지 웹페이지 음악연주 질문있습니다. 1 초보자 2020.03.29 190
211 한글html 1 키보드 향기 2020.03.29 919
210 예제 2-21 1 Daisy 2020.03.29 237
209 7장의 8번문제 1 궁금 2020.03.20 247
208 71page 1 아리송 2020.03.07 77
207 1장 test1, 2, 3 파일 2 열공중 2020.03.07 538
206 html에 css작성할때 2 궁금이 2020.03.04 351
205 61 page 실습문제 1번 오류찾기 2 궁금이 2020.02.15 1754
204 한글 타이틀이 깨져 보입니다. 1 안스가리오 2020.01.06 116
203 11장 실습문제 6번 arc()문제 제발요 2019.12.06 1093
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 21 Next
/ 21
위로