171122~23-TIL

Reading time ~3 minutes

오늘 한일

- HTTP 웹 서버 구현 리팩토링

  • request, respone 관련 클래스들 일부 수정

  • GET/POST일때 query를 처리하는 부분 수정중

  • 진행 하다 막힌 부분에 대해 포비한테 sos 요청

    1. HttpRequest클래스에 대한 테스트 코드 구현

    2. api에 대해 알게 됨

- 호눅스의 초간단 node.js 알아보기 강의

  • 관심이 가서 물어보니 “hello world”만 보여주는 정도로 작업한다해서 참석 안할려다가 ios구역(?)에서 강의를 하여 참석

  • node.js는 자바스크립트를 브라우저 밖에서 실행시켜주는 실행기이지 웹프레임워크가 아니다.

  • 그러니 당연히 자바스크립트 런타임 실행기지 언어도 아니다.(이 부분 뜨끔했다)

  • MEAN(MongoDB + Express + Angular + Node) : 웹 서버 프레임워크

  • ngrok 사용

  • ejs 템플릿 엔진 사용


오늘 느낀점

  • InputStream을 생성자의 매개변수로 받는 클래스가 있어 테스트코드를 짜기 힘들었다. 아니, 해당 클래스는 못짰다. 근데 그게 HttpRequest 클래스이다 보니 테스트 자체가 안돼고 있었다고 보면 된다.(그덕에 TDD도 못했고, 험난한 수동 테스트시간을 보냈다) 진작에 물어볼걸…

  • 이전까진 카톡api로 카카오톡 메시지 보내기, 네이버지 지도 정보 api만 api의 예로 내 머리속에 있었다. 그래서 api가 기업에서 자신의 서비스의 기능 일부를 사용할 수 있게 하거나 자신들이 소유한 정보를 이용할 수 있게 제공해주는 무언가라고 생각했다. api란걸 이전까진 기업이 사용자한테 자신의 서비스 정보를 제공 혹은 사용할수 있게 해주는 무언가라고 생각했다.(api에 대해 검색해보면 나오는 사전적인 뜻만 보곤 더더욱 이해가 안되서 저 예를만 더욱 생각하고 있었다)그리고 해당 부분에 대해 필요해지면 그걸 이해할 수 있는 상황이란 거니 필요해졌을때 보자 해서 더 이상 알아보질 않고 있었다.
    오늘 포비한테 다른부분을 질문하다 해당 키워드를 말씀하길래 물어봐서 조금은 알게됐는데 지금 생각해보니 내가 미친놈이였다.

  • 개인적으로 api에 대해 포비한테 들으면서 지식적인 면 말고도 얻은게 있는데 코딩을 하다가 고민이 되는 여러가지 중에 파라미터를 무엇으로 둘 것인지, 어떤걸 반환 할 것인지 애매할때가 있었다. 지금까지는 코드를 짤때 나 하나만 염두해 두고 작업을 했었는데 그런 고민이 될때 이 클래스를, 메소드를 사용하는 이용자가 있다고 가정하고 고민하면 좀 더 쉽게 답이 나올 것 같다. 즉, 내가 짠 메소드나 클래스를 내가 이용하는건 크게 어렵지 않다. 거꾸로 내가 다른사람의 코드를 사용하는데 지금 내가 짠 몇몇 부분은 더럽게 쓰기 어렵거나 제약사항이 많을거 같다. 처음부터 그런점을 고려 하면서 만들면 또 설계만 고민하는 무간지옥에 빠질 수도 있으니 이 방식은 여러 선택지에서 고민 될때 적용하자.

  • node.js 강의가 진짜 “hello world”만 보여주는 정도의 작업만 했지만 참석 안했으면 후회할뻔 했다. 실습 자체는 그 정도 선에서만 한게 사실이지만(템플릿 엔진도 사용하지만 그것도 간단했다) 실습만이 아닌 이론적인 부분도 알찼다.
    뭐든지 안해본 분야에 대해서는 처음 시작이 가장 어려운 법이다. 나중에 node.js를 공부하게 된다면 오늘 강의 덕분에 가장 어려울수도 있는 첫 시작점은 쉽게 지나 갈 것 같다.
    공부까진 아니고 체험 해보고 싶었던 목록에 있던 django, node.js에 대해선 간단히 체험해봤으니 이젠 React만 해보면 될 것 같다.

  • 오늘 같이 어설프게도 아예 잘못 알고 있거나, 존재조차 몰랐던 부분이 마주치게 되면 기초가 너무 부족하다고 느끼게 된다.(그렇다고 좌절까진 안한다. 모르면 알아가면 되니까) 혹은 배웠지만 제대로 숙지 못하는 것들도 많다. 위엔 따로 언급이 없었지만 mapper도 있다. 거기다 내가 인지하지도 못하고 사용하고 있던 것들도 있다. 경험이 짧으니 별수 없는거지만 확실히 이제는 슬슬 채워나가야 할 시기가 된거 같다. 펌웨어 분야를 포기한 이유가 직접적으로 하드웨어(회로)까지 신경쓰지 않고 좀더 순수하게 프로그래밍만 집중하는 분야에서 공부와 일을 하고 싶어서였다. 그 중에서 웹을 선택한 가장 큰 이유는 계속 새로운 것들이 나오고 발전해 간다는 점이였다.
    대학교 신입생때 전공이나 뭐 이런 얘기를 하다 가볍게 물어봤던 넌 뭐가 좋냐는 선배의 질문에 1분쯤 고민하다 나온 대답이 “어떤 분야가 됐던 신기술이 좋은거 같아요. 신기하고 재밌잖아요”라고 대답했던 기억이 있다. 아직도 그걸 기억하는 이유는 전자기기를 좋아해서 전자과를 갔긴 했었는데, 저 질문을 받았을때가 정말 무엇을 좋아하나에 대해 제대로 고민했던 첫 순간이였던거 같다. 그러다보니 IT나 과학 기사(비록 당시엔 전문 기술적으로 보이는 뉴스는 이해가 안돼서 패스했지만..)는 관심있게 쭉 봤다.
    덕분인지 웹(c를 하며 공부한 tcp/ip 윗단 기준으로)과 객체지향에 대해서는 생활코딩 웹앱 강의 빼곤 정말 포비와 처음 시작했는데 그런것 치고는(?) 빠르게 많이 알게된거 같다. 근데 그만큼 배운 부분에 대해서도 구멍도 많고 그냥 모르는게 더 많은거 같고, 아쉽게도 지금쯤 알아야 할 것을 모르는 경우가 있는 것 같다. 웹이 빠르게 발전 해 갔고, 가고 있다는 점이 아직도 나한텐 좋은 점이지만 지금은 단점이기도 하다. 그러고보니 그점이 현재는 내가 새로운것에 관심을 덜 가지는 이유기도 하다. 한 일년쯤 시간이 더있어서 여유롭게 관심 가는 것들 위주로 해보면서 자연스럽게 스팩트럼이 넓혀져 가면서 공부했으면 더 재밌었을거 같다.

  • 생활코딩의 몇몇 강의를 코드스쿼드를 오가는 길에 보려고 폰에 넣어 놓고 안보고 있는데 실습이 중심인 강의라 눈으로 보기만 하면 집중도 안되고 머리속에도 들어오지 않아서 그렇다. 오늘은 집가는 길에 포비가 공유해준 REST API 동영상을 봤는데 많은 도움이 됐다. 일단 RESTapi의 REST는 간단히는 인증마크처럼 규제로도 볼수 있는 규약을 다 따른 api를 의미하지만 다 안따르고서도 RESTapi라고 주장 하는 경우도 많다.(그래서 진짜 다 따른 경우 쓸려고 RESTful란 용어도 생긴건가?) 해당 규약이 있는 이유는 과거와 미래에 대한 유연성 때문이고 말이다. 주말에 이와 같이 “웹”과 관련된 지식을 쌓을 수 있는 동영상들(보고, 듣고, 생각 해보는게 중심인)을 좀 찾아 봐야겠다.

  • 질문을 하면서 느낀점으론 스스로 고민해서 해결 하고 싶은 욕심이 큰데 어느정도 수준까지만 해야지 적당히 줄여야겠다. 그래서 질문을 잘 안하다 어쩌다 하게되니 처음 생각보다 물어봐야 할게 더 많은 경우가 생긴다. 그러다 보니 제대로 질문 할 준비도 안된 상태의 질문들을 하게 되는 것들은 대체로 횡설수설하게 되는 경우가 있다.
    혼자 해볼려다 알게모르게 질문거리가 쌓여서 그렇게 되는거 같은데 스스로 해보는것도 좋지만 적당히 질문 혹은 조언을 요청하면서 진행하도록 해야겠다.


내일 할일

  • HTTP 웹 서버 리팩토링