171124-TIL

Reading time ~3 minutes

오늘 한일

- 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이 있으니 이전으로 돌아가버리면 되니까 구현 가능할 것 같은 아이디어가 나오면 일단 도전해보고 보기로 마음 먹었다. 아무래도 생각만 하는것보다는 구현을 하는게 재미도 있고 집중도 잘 되니까 말이다.

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


내일 할일

  • 마소콘 참여

  • 김장