오늘 한일

- 캐시 및 HTTPS, HTTP2.0 Q&A

  • 캐시 부분은 가볍게 봐서 놓쳤던 부분들을 보충 하게 됨

  • 캐시된 응답 무효화 및 업데이트를 하는 방법 및 적용 사례를 봄

    • 쿠팡의 경우 캐싱될 자원의 path에 빌드 날짜를 추가하여 업데이트가 있을시 날짜에 의해 자동으로 path가 변경되어 클라이언트에서 새로 받게 된다.
  • 구글 검색의 이미지 탭에 이미지들을 빠르게 처리하기 위한 방법을 알게됨(base64 인코딩, 네이버의 경우 확인해 보니 각각의 img src가 박혀있다)

  • 예전 네이버의 경우 로그인 부분만 Https로 구현되어 있었는데, 그게 어떻게 가능한지 알게됨.(iframe)

  • node.js의 경우 하나의 쓰레드(1mb) 여러개의 소켓(1kb)을 가지고 반복문 도는 방식, 자바의 경우 요청에 따른 여러 쓰레드, 그에 따른 여러 소켓 사용.

  • 쓰레드 풀로 지나치게 많은 쓰레드를 생성 하면 메모리가 꽉차서 서버가 죽을 수 있다. 사용자 입장에선 느린것 보다 안되는게 더 최악이다.(톰캣 기본 설정은 200개)
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="10000"
               redirectPort="8443"  
               maxThreads="400"   
               acceptCount ="150" />
    

    acceptCount를 통해 쓰레드가 모두 사용 중일 경우 Request Queue에 쌓이는 대기 요청의 수를 조정 할 수 있다.

  • HTTP2.0이라고 무조건 빠르진 않다. 이론상으론 더 빨라야 하는데 말이다…https를 적용해서 개발하는게 생각보다 간단하다(무료 인증서도 받을수 있고) 그러니 가능하면 https로 개발 해보자.

- 헤드퍼스트 Servlet & JSP 공부


오늘 느낀점

  • 사실 캐시 부분은 링크 되어 있던 캐시 HTTP 캐싱 페이지만 보고 가볍게 질답 시간을 가졌다. 캐시 보존 기간 설정 및 기간이 남은 캐시 데이터를 업데이트 하기 위해 URL을 변경한다는 점과 캐시를 통해 불필요한 데이터 전송을 줄인다는 점 정도만 생각하고 더 깊게 생각해 보진 않았다. 그러다가 오늘 설명을 들으면서 아차 싶었다. 솔직히 캐시를 너무 만만히, 가볍게 생각 했던거 같다.

  • 방금 TIL 작성하다 깨달았는데 내가 HTTPS와 HTTP2.0를 좀 혼동하고 있었다. HTTPS가 HTTP2.0에 포함된 내용인줄 알았다. 그 당연한 사실을 깨달은 것 만으로도 스스로 헷갈렸던 내용들이 많이 해소 됐다. 생각해보면 오늘 오전에 이상한 질문들을 많이 했던거 같다.(지금보면 웹소켓과 https의 관계를 헷갈려 할 필요조차 없다)

    흔히 TLS와 HTTPS를 혼동하는 경우가 많은데, 둘은 유사하긴 하지만 엄연히 다른 개념임을 알아두자. TLS는 다양한 종류의 보안 통신을 하기 위한 프로토콜이며, HTTPS는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜이다. 다시 말해 TLS는 HTTP뿐만이 아니라 FTP, SMTP와 같은 여타 프로토콜까지 포함하며, HTTPS는 TLS와 HTTP가 조합된 프로토콜만을 가리킨다. (출처)

    자꾸 해당 내용이 찝찝해서 다시 찾아봤는데 이제 더 명확해 졌다. 주말에 HTTPS와 HTTP2.0에 대해서 다시 확인 해보면서 정리해봐야 겠다.

  • HTTPS에서 가장 혼란스러웠던 내용은 바이너리 프레이밍 계층이라는 새로운 계층이 생긴 덕분에 기존 방식과 달리 tcp -> http 사이에 캡슐화가 추가적으로 일어나니까 당연히 https를 사용하여 통신을 하게되면 다른 모든 페이지 또한 https여야 한다. 일반적으로 아주 당연하다. 근데 이전 네이버의 경우 아니였다. 로그인 페이지만 https이고 나머지 페이지는 http였다. 이 부분에 대해서 혼란을 겪었는데 포비 덕분에 해결 되었다.(당시엔 로그인 페이지만 iframe을 통한 https로 구현된 또 다른 페이지)

  • ssl의 핵심인 공개/개인키를 통한 대칭키 암호화/복호화 + 인증서 잊지말자. 도난당한 패스워드라는 책 괜찮은것 같다.

  • 이번 학습을 통해서 6월 혹은 7월에 생활코딩 페이지를 접속 하려고 하면 “해당 사이트는 인증서가 만료되었습니다.”라는 문구를 보고 “해킹당했나? 뭐지?”라고 생각하면서 찝찝해서(알다시피 빨간색이 포함된 페이지가 뜬다) 이삼주 동안은 생활코딩에 접속을 안했는데 오늘 생각해보니 참….(내 개인정보가 중국 사이트에서 돌아다니는걸 본적이 있어서 내 정보는 이미 공공재라는 생각과 추가적으로 정보 유출이 될수도 있는 일엔 민감하다)

  • 사실 https로 개발 하는게 엄청난 일이라고 생각 했는데(자료들을 찾아보면서는 다들 생각보다 간단하다고들 하긴 했지만) 구현할때 필요한 부분들에 대해서 좀 더 자세히 포비한테 듣게 되면서 생각보다 더 간단할 것 같다는 생각이 들었다. 트렐로를 구현할때 한번 적용해 봐야 겠다.

  • 확실히 Http 웹 서버를 구현 하면서 request, response, controller를 구현 해본 경험 덕분에 Servlet을 공부 하면서 일반적이라면 추상적으로 이해됐을 부분들이 좀 더 구체적으로 이해가 되게 되었다.

    PrintWriter out = response.getWriter();
    out.println("<h1>Hello world!!</h1>");
    

    직접적으로 중요한 부분은 아닐수도 있겠지만, 서블릿에서 이렇게 out.println을 할 시에 어떻게 이 부분을 클라이언트가 html로 받을 수 있는지도 간단히 생각 할 수 있게 되었다.(당시 HttpResponse 클래스에 out 스트림이 있는게 별로인거 같다고 했던지라 이 부분을 다시 봤을때 뜨끔 했다)
    예시를 정작 중요한 부분을 들진 않았지만 이런 사소한 부분도 몇몇 군대 눈에 띄고, 당연히 더 핵심인 서블릿에서 전에 내가 구현한 리퀘스트, 리스폰스, 컨트롤러가 실질적으로 어떻게 구현 되었고 사용되는지 자연스럽게 이해가 된다. 한 템포 느리게 잠깐 학습의 시간을 가지는게 많은 도움이 되는거 같다.


내일 할일

  • 헤드퍼스트 Servlet & JSP 공부 마무리

  • 톰캣 완벽분석 혹은 네트워크 책 보기

28일 한일

- Servlet과 JSP 실습

  • Servlet과 JSP에 대한 기초적인 학습

  • 요구사항 1 : 개인정보수정
    • update.jsp 제작
    • Post 요청을 처리 할 UpdateUserServlet을 구현하여 유저 정보 갱싱
  • 요구사항 2 : 로그인/로그아웃
    • LoginServlet을 구현하여 로그인 기능 구현(로그인 성공시 session에 유저를 추가)
    • JSP에서 session 데이터를 확인하여 로그인 상태 유무로 로그인/회원가입, 로그아웃/개인정보수정을 나타나게 함
  • 요구사항 3 : 사용자 목록
    • 가입되어 있는 사용자들의 목록이 나오게 list.jsp 및 GET요청 처리 ListUserServlet 구현

28일 느낀점

  • HTTP 웹 서버 구현 완료 후 Servlet과 JSP 실습을 시작 하였다. 이전 9월달에 간단하게 공부 했는데 기초적인 사용법 일부를 까먹어서 진행이 늦었다. 역시 제대로 학습이 안된 부분은 안쓰다보면 금방 까먹게 되는 것 같다.

29일 한일

- 도서관에서 도서 대여

  • 헤드퍼스트 Servlets & JSP
  • 성공과 실패를 결정하는 1%의 네트워크 원리
  • 톰캣 최종분석

- Servlet과 JSP 실습

  • 요구사항 3 : 사용자 목록
    • 미구현 되어있던 로그인 유무에 따른 유저목록/로그인 화면으로 분기 추가

- ServletFilter 및 실습

  • ServletFilter 학습
  • 요구사항 : Servlet 요청과 응답에 대한 실행 시간 표시
    • ServletFilter를 활용하여 실행 시간을 표시하게 구현
  • HTTP 공부 및 질문 사항 체크 중

  • 헤드퍼스트 Servlets & JSP 공부 중(빠르게 핵심만 보자)

29일 느낀점

  • 어제의 실습도 그렇지만 요구사항 3도 간단히만 처리해서 이래도 되나 싶긴 하다…일단 그 요구사항을 얼마나 잘 짠 코드로 해결 하냐가 중요한 점이 아닌거 같으니 해당 부분은 지나가기로 했다.
    resp.sendRedirect("/user/login_failed.html");
    

    이렇게 처리한 유독 찝찝하니 한번 확인 해 봐야겠다.

  • ServletFilter는 생각보다 너무 쉽게 끝나서 허무 했다. 앞에 있는 설명 읽는 시간이 훨씬 오래 걸렸다. 그래서 “?” 요상태임.

  • 책 좀 빌렸는데 각각 얼마나 보다 반납하게 될지 과연…

  • Servlet과 JSP가 직접적인 실습은 적어서 금방 끝날거 같은데 다음 단계인 “MVC 프레임워크, JDBC 라이브러리”를 빨리 들어가기 보단 빌린 책이나 HTTP, Servlet, JSP에 대한 추가적인 공부를 더 하다 가야겠다. 이번 과정 초에는 빨리 단계를을 지나고 싶은 욕심이 있었는데 요즘엔 가능하다면 천천히 가면서 보고 싶은것들 혹은 좀더 하고 싶은것들을 하며 진행을 하고 싶다. 그래도 시간적 여유가 남아돌진 않으니 너무 늦어지면 안되겠지만 말이다.(이럴땐 내가 컴공이였으면 학부 시절 좀더 여유롭게 이것 저것 많은걸 봤을텐데 하는 아쉬움(후회x)을 느낀다)

  • 확실히 요즘 들어 내가 공부하고 있는 웹, 백엔드가 무엇인지에 대한 그림이 조금은 보인다. 2주 전까지만 해도 “웹서버-was-db” 이렇게 구성해야 한다고 암기하고, 까먹지 않을려고 노력했다면 지금은 왜 그렇게 있어야하는지 자연스럽게 이해가 된다. 3티어 구조를 예로 들었지만 HTTP 및 Servlet도 예전에 봤을때와는 느낌이 다르다.

  • 원래는 파이썬&장고 강의를 오늘 마무리 하려고 했는데 당연하다시피 해당 공부는 우선순위가 높지않아 미련없이 무기한 연기됐다. 주말에 볼 생각은 있는데 빌린 책들이 더 우선이라 어떻게 될진 모르겠다.

내일 할일

  • HTTP 관련 추가 질답 시간
  • Servlet과 JSP 공부

오늘 한일

- HTTP 웹 서버 구현 리팩토링

  • HttpResponse 테스트 코드 활용

  • HttpResponse에서 출력스트림을 가지고, 버퍼에 쓰게 변경

  • GET/POST에 따라 200/320가 결정 되던 부분을 변경 하고, controller 단에서 forward(), sendRedirect()를 통해 결정되게 변경


오늘 느낀점

  • HttpResponse도 이전의 HttpRequest 클래스 처럼 스스로 테스트 코드를 작성하지 못했는데, 포비가 예시로 준 테스트 코드를 사용하여 리팩토링을 시도하였다. 확실히 테스트코드가 있는 경우가 리팩토링 시 많은 시간을 단축 시켜준다. 그러면서 자연스럽게 테스트 코드에 포함 된 forward(), sendredirect() 메소드가 추가되는 방식으로 진행을 하였다.
    이전에 만든 코드에서 핵심 로직 중 한 부분이 바뀌게 된건 아쉽지만 대신 다른 부분의 변경은 최소화 하며 작업을 진행 하였다.(실제로도 추가적인 작업이 예정 되어 있던 Cookie 부분을 빼면 다른 부분의 변경은 적었다)그렇게 작업을 하고 나니까 이전에 있던 불필요한 부분들이 많이 걷어지고 간결해지는 느낌을 받게 되었다. 저번주 코드보다 지금 코드가 낫다고 확실히 말 할 수 있을거 같다.

  • 제시되어 있는 테스트 코드 등 리팩토링의 힌트들을 진작에 보고 내 코드에 욕심을 안내고 적용했다면 좀더 빠르게 진행 했을 것 같다.(사실 욕심 냈던 코드들은 대부분 사라졌다…)그래도 욕심을 냈던 만큼 아쉬운 코드(혹은 아이디어)들을 버리면서 버릴건 버리는 경험도 하게 된거 같다. 이전 볼링의 경우 힌트를 얻으면 현재 코드에 적용이 힘들어 새로 만드는 식으로 많이 했는데 이번에는 다시 처음부터 시작 한적은 없다. 새로운 방식을 적용하며 리팩토링을 하였다. 그런면에서 이번에 초반에 작성한 돌아가긴 해도 엉망인 코드에서 더 나은 코드로 한걸음씩 이동해 간 느낌도 들었고 나중으로 갈 수록 일부분이 바뀌더라도 다른 곳에서 수정할 부분이 적어졌다.(커플링이 줄어든 것일까?)
    또한 이전에는 갖지 못했던 사용자 입장에서 코드를 작성해 보았다. 지금으로선 다른 것들도 있지만 한 부분(content-type을 controller에서 입력하는 것)이 크게 마음에 안들지만, 그 부분을 빼면 사용자가 controller를 추가해 주고 해당 컨트롤러에서 어떤 로직을 담고 200 혹은 302만 호출하면 작동 할 수 있게 하는 것에 중점을 두고 작업을 해봤는데 지금으로선 만족 할 만 한것 같다.(간단히 추가를 한다면 위에서 말한 컨텐츠타입과 400에러 부분)

  • 저번주 금요일 부터 시야 상에 포스트잇을 붙이고 작업 하고 있는데 확실히 그 효과를 보고 있는거 같다. 눈 앞에 내가 해야할 일을 적어 놓음으로써 지속적으로 무엇을 해야하는지 상기 시켜주고, 해결 된 일, 남은 일을 보면서 점점 목록이 줄어드는 걸 보면서 저녁이 되면서 지칠 수도 있는 상황에서 도리어 기운이 나기도 한다. 또한 현재 작업 중인 목록을 보게 되면 한 작업이 길어지면서 내가 무엇을 하고 있나 방향을 잃을 때가 있다. 그때 지속적으로 내가 무얼 하고 있는지 상기 시켜준다. 게다가 간략하게 적지만 너무 포괄적으로 적지도 않기 때문에 오늘 해야 할 일이 정리되기도 한다.(포스트잇 한장이다. 딱 적당한 분량만 적을 수 있다. 만약 해야할 일이 많다면 한장 분이 끝나고 그 다음 새로 작성해서 진행하면 된다.)
    군시절 행정병 계통이였던지라 사용했던 방식인데 나한텐 잘 맞는 것 같다.

  • 이번 과제를 하면서 조금은 느렸을 수도 있는데 내 속도대로 잘 진행한거 같다. 솔직히 조금 늦어 졌다던지 늘어진 부분이 있다. 내가 미숙해서 늦어진 부분은 별수 없는데 늘어진 부분이 문제다. 중간에 그랬는데 후반으로 가면서 나아졌으니 최소한 지금 이 걸음걸이를 유지 하거나 조금은 더 빨리 갈 수 있게 노력해보자.(억지로 무리하진 말고 자연스럽게 가자)


내일 할일

  • HTTP 웹 서버 구현이 merge 되었다니 다음 단계?

  • 시계를 바꿔 가자(운동량 체크)

25일 토요일

- 마소콘 참석

개발완료 포기하면 그 순간이 바로 개발 완료예요…


26일 일요일

- 김장

집앞

어제 마소콘이 끝나고 오니 나를 반겨주는 사과박스!!!
였다면 좋았겠지만 다 배추다. 뒤에 공간도 없다.
이걸 세명이서 다했다.(다행히도 마지막 두시간 쯤은 한분이 더 도와주셔서 나중엔 넷)

- 파이썬 웹 프로그래밍 - Django로 웹 서비스 개발하기

  • localhost에서 소셜로그인 기능 구현
  • Profile 기능 추가
  • 남은 2강의 :
    1. Profile 업데이트 페이지
    2. 썸네일 만들기

느낀점

  • 마소콘에서 배워간 것들이 많긴 하지만 가장 기억에 남는 부분들

    1. 오픈 소스의 내부를 보고 고쳐봐라(굳이 기여하지 않고 자신만 쓸기능으로 개조(?)를 해서라도 고쳐봐라)

    2. 버그가 없는 소프트웨어는 없다. 그렇기 때문에
       빠르게 만들고,  
       빠르게 피드백 받고,  
       빠르게 고친다.  
      
       단순히 처음부터 잘 만든다고 그게 꼭 의미있는 소프트웨어는 아니다.
      

      대략적으로 적은거라 오해를 살수도 있지만 어떤 방향으로 말을 했을진 알것이다. 저기서 말한 피드백은 고객한테 피드백을 받고 고치란 것인데 현재 내 상태에서도 혹은, 같이 코드스쿼드 과정을 진행하고 있는 다른 사람들도 적용이 가능 할것 같다.
      거기다 저런 방식으로 작업을 진행 하면 pr도 더 많이 보내보고 그만큼 리팩토링도 더 많이 할 수 있을 것이다. 생각해보면 처음부터 잘 만들어보려고 하는 이유가 잘 만들려고 하는 욕심도 있지만, 내가 한 무언가에 대한 지적(나쁜 의미로서가 아닌)을 받는 것에 대한 두려움 같은것도 있었던거 같다.(치부가 드러나는 느낌이랄까?) 대학 시설 발표 시간등을 통해 질문 받는 것에 대해서는 두려움이 없는데, 좋은 방향으로 가기 위해 받는 지적을 경험한 적이 없거나 적었던게 원인이지 않을까 싶다. 보통 그런 상황에선 감점이라던지 불이익이 따르니까 말이다.(지적이란 표현 말고 딴 표현을 쓰고 싶은데 좋은 단어가 떠오르지 않는다)

    3. 배준형 코무 운영진

      2012년 입사해서 이전 프로젝트를 보여달라 하니까 압축파일을 보내줌….(최종, 최종2, 최종3..)
      git을 사용하자 하니까 묵살 당함
      혼자서 씀(관심을 가지는 동료가 늘어나거나 그런 입사자들도 생김, 관심 없던분이 퇴사 하기도 한다)
      2017년 github 유료 계정 제공
      빌드 자동화도 그렇게 동료를 늘려감

      포비가 말했던 회사에서 버전관리 시스템 등 여러가지가 낙후(?)되어 있으면 혼자라도 하라고 했었는데 그걸 어떻게 실천했는지 실예를 보게 된거 같다.
      또한 코드리뷰에 대한 간단한 내용도 포함되었는데, 경품 시간때 랜덤 코드의 오류를 보여줌으로써 다시한번 “이래서 코드리뷰를 해야 합니다”를(실제 하신말) 상기 시켜주셨다.(다행히 초반부 간단한 물건들 수십개 뿌리는 과정서 발생한 일이라 재밌는 해프닝으로 끝났다)

    4. 그외 리액트, Typescript이 무엇인지에 대해 간단한 체험

    내가 현재 컨퍼런스에 참석하는 기준이

    • 현재 내가 공부하는 내용과 관련이 있어 도움이 되는가?
    • 주제들이 너무 한 분야에 치중(혹은 전묵적) 되어 있지 않고 부담없이 들을 수 있는가

    이 두가지 였는데 다행히도 두번째 경우에 해당 되서 좋은 자리가 됐다.

  • 김장을 하루종일 할 줄 알았는데 다행히도 저녁전에 끝났다. 다음주 김치 들어간 음식은 안 먹을거다. 다음주에 할라 했던 세포대가 더 남았는데 다행히도 고춧가루가 다 떨어졌단다. 안그랬으면 세포대 밖엔 안되지만 다음주도 김장 할 뻔했다.

  • 김장이 빨리 끝난 관계로 파이썬, 장고 강의를 추가로 봤다. 현재 1시간 분량의 두 강의가 남았는데 요번주 수요일에 마무리 해야겠다. 근데 페이스북에서 소셜로그인 연동부분을 localhost에서 이용시 좀 제약을 준 느낌인데 왜 그럴까? 느낌적인 느낌으론 로컬에선 이것저것 해볼수도 있어서 막았다? 정도인데 이것저것도 그게 무엇일지 크게 감은 안온다.(유저데이터를 악용 할 수 있다?)


내일 할일

  • HTTP 웹 서버 리팩토링

오늘 한일

- HTTP 웹 서버 구현 리팩토링

  • Cookie 클래스에 setter 메소드 추가 : 그렇게 할당한 값을 이용하여 response에 Set-Cookie를 설정하게 할 계획

  • GET/POST 구분없이 parameter 처리하게 구현중

  • 남은 사항 :

    1. HttpResponse가 생성되는 방식 및 내부 처리 로직 변경(가능하면 몇개 꼭 바꿔야하는 곳 빼곤 반환 값과 매개인자는 변경 안하고)

    2. HttpResponse에서 출력스트림에 데이터를 쓰는 부분 수정(1번 사항이 끝나면 금방 가능한 부분 + 일정부분 자연스럽게 같이 처리되는 부분)

- 포비와 짧은 상담(?)

- 포스트잇에 오늘 해야할 일들을 적고 시야에 보이게 붙여 놓기 시작


오늘 느낀점

  • 사실 동작하는 것에 자체에 대한 구현은 이미 끝났다. 지금 짜여진 설계에 한해서는 어느정도 리팩토링이 끝나있다고 생각한다. 그런점에서 설계가 잘못 되어 있는 부분이 있거나, 직관적으로 어떻게 처리해야 할지 쉽게 감이 잡히지 않는 부분들 위주로 남아있어서 진행 자체가 느려지고 있다. 그래도 포비 말처럼 볼링을 구현할때와 같이 스트레스를 받는 일은 별로 없다. “이정도면 그냥 되지 않았을까” 스스로한테 타협을 시도하는 경우만 있지만, ‘깔끔히 짰다 > 이정도면 됐다’ 이 상태라 좀더 하고 싶은 욕심이 큰거 같다.
    덤으로 볼링때 고생했던 경험 덕분에 “볼링 -> 체스 -> Http 웹서버” 차례로 작업을 하는 것에 대한 노하우가 생기는거 같다. 볼링때 설계에만 너무 집중하다 아무것도 못하고 보니 이제는 어느정도 막히면 일단 만들고 본다.

  • 고민이 있을때 말을 하거나 글을 쓰것 자체만으로도 어느정도 흘러보내진다고 생각한다. 실제로도 그렇게 느끼고 말이다. 옛사람들도 그랬는지 “임금님 귀는 당나기 귀”라는 이야기도 있지 않은가? TIL을 작성하는 가장 큰 이유는 무언가를 꾸준히 하는 버릇 혹은 경험을 만들어 나가는 것이지만 언제 들어서 생긴 이유 중 하나에는 해우소 같이 번뇌를 흘려보내는 역할도 혹은 반성하는 역할도 담당하고 있다.
    그런 차원에서 솔직히 말하자면 요즘 C를 공부할때보다 독기가 빠진 느낌이다. 정확히는 구현함에 있어 집중이 떨어진거 같다. 생각해보면 당시엔 부족한 부분이 있으면 단순 지식적인 면인 경우가 커서 무엇을 봐야할지 명확했다.

     #define  RCC_APB2ENR    (*(volatile unsigned int*)0x40021018)  
     #define  GPIOA_CRH
     #define  GPIOA_CRL    (*(volatile unsigned int*)0x40010800)
     #define  GPIOE_CRH    
     #define  GPIOE_CRL    (*(volatile unsigned int*)0x40011800)
    
     int main()
     {
       RCC_APB2ENR |= (1<<2) | (1<<6);    
       GPIOA_CRL |= (0x3333 << 16);
       GPIOE_CRL |= 0x3333;
       while(1);
     }
    

    stm32_led
    (EEPROM이 보인다)

    아래는 펌웨어계의 “hello world”인 led에 불을 키는 동작을 구현하기 위해 봐야하는 해당 mcu에’만’ 적용되는 데이터시트의 일부다

    stm32

    stm32
    (사진 및 코드 출처)
    데이터시트에서 1비트도 어긋나면 안된다!!(정말 오랜만에 보니 순간 코드가 어떻게 실행 되는지 이해하는데 시간이 걸렸다…)
    당시 새로운 무언가가 쏟아져 나오는 소프트웨어 분야에 대한 동경으로 시작했는데 데이터시트들만 쳐다 보니 고고학을 하는 기분이 들었다. 뭐 저런 부분만 했던건 아니였기 때문에 프로그래밍에 더 집중하고 싶다는 확신을 가지고 웹이라는 분야로 넘어오게 되었다.
    (과정이름은 IOT임베디드였지만 실제 진행된 커리큘럼은 펌웨어에 집중 되어 있었다. IOT는 실종)

    안될때는 보통 부족한 지식을 쌓고 그걸 이용하면 되서 답이 있고 어떤 의미로는 단순했다. 복잡한걸 짤땐 설계적인 부분도 들어가겠지만 이론 3개월의 교육기간에 소프트웨어적인 설계까지 가르치기엔 “hello world”부터 시작하는 사람들한텐 필요한 다른 지식이 너무 많았다.(덕분에 다른 국비 출신보다는 cs지식이 더 많은편인거 같다) 그리고 동작하기 위해선 설계가 잘못되면 기판이나 부품이 고장 날수도 있는 하드웨어 측 설계가 더 우선이였으니 말이다. 그래서 부족한게 있으면 필요한 지식을 찾아 머리속에 넣고 적용하면 됐기 때문에 고민을 할 필요가 크지 않고 집중만 하면 됐다. 당시엔 잘 “알고” 싶다는 생각으로 집중했던거 같다.
    근데 지금은 잘 “하고” 싶다는 조금은 추상적인 생각을 갖고 있는것 같다. 단순하게 커플링을 낮춰야 한다던지 다른 몇몇 개념들을 알고 있고, 몰라서 찾아보고 머리 속에 개념을 넣는다고 잘짜여지진 않는다.(모르고 있던 메소드나 api만 알게된다고 좋은 구조가 나오는 경우는 많지 않다) 그러다보니 일전에 집중하는 대상이 설계였던거 같다. 천재는 아니기때문에 아직 경험이 부족하다보니 금방 좋은 설계가 나오지 않는다. 그러다보면 생각을 하는 시간만 길어지게 되고 진척이 없다보니 집중이 흐려졌던거 같다. 그러면서 딴짓은 안하고 조금씩 계속 하고 있다는 생각에 그 상태를 유지하고 있었던거 같다.(진행이 느려지고 있는 솔직한 이유며 시간적 비효율의 극치를 느끼고 있었다)
    그걸 고치기 위해 오늘부터 눈에 보이는 곳에 오늘 해야할 일들을 적어났다. 오늘도 많은 진척은 못 나갔지만 확실히 효과가 있는거 같다. 그리고 오늘 저녁때 확실히 마음 먹은 부분은 어차피 구현하다 기존에 되던 것들이 안돼면 git이 있으니 이전으로 돌아가버리면 되니까 구현 가능할 것 같은 아이디어가 나오면 일단 도전해보고 보기로 마음 먹었다. 아무래도 생각만 하는것보다는 구현을 하는게 재미도 있고 집중도 잘 되니까 말이다.

  • 요 근래 이런저런 생각을 적다보니 우연찮게 잠깐의 상담시간을 가지게 되었는데 덕분에 좀더 마음이 가벼워 진거 같다. 사실 조금쯤은 많이 고민하고 있던 집중이 덜되는 부분을 위에 솔직히 털어 놓았고(스트레스는 안 받고있지만 슬럼프 혹은 작은 계단을 한칸 더 오르기 직전이라 올라가기 전까진 정체되어 있는 상태 일수도 있을거 같다), 어떻게 해결해 나갈지 방법은 정해뒀으니 지속적으로도 집중이 안되는 불상사가 발생하지만 않는다면 한동안은 심적인 고민은 없을 거 같다. 덤으로 주말에 김장을 해야되서 이클립스를 킬 시간조차 없다.


내일 할일

  • 마소콘 참여

  • 김장