오늘 한 일

  • 오늘 열린 주특기 심화 강의 <리액트 심화반>을 2주차까지 수강했다. 수강 시간도 길고, 내용도 많아서... 이것도 역시 이해를 하고 말고와는 상관없이 한번 눈으로 보고 따라해 보는 것에 의의를 두었다. 시간이 갈수록 매일매일 주어지는 새로운 과제들에, 또 아직 완료하지 못한 지난 숙제들에 양쪽으로 치이게 된다. 왜 하루는 24시간뿐인 걸까.. 잠을 잘 수 있는 시간이 점점 줄어들고 있다.

내일 할 일

  • <리액트 심화반> 3주차 강의, 시간이 된다면 4주차 강의까지 수강한다.
  • 프로젝트를 진행하고, 코딩을 하다 보니 자바스크립트에서 부족함을 느낄 때가 종종 있어 자바스크립트 관련 영상을 찾아본다. 하도 구글링 하고 이것저것 갖다 써 봐서 구문을 쓸 줄은 알지만, 기본 컨셉이나 중요 개념들을 잘 모르는 것 같다.
  • 주특기 심화 주간 과제의 기획을 해 본다. 어제 제출한 기본 과제는 예시로 주어졌던 와이어프레임에서 크게 벗어나지 않고 CSS만 조금 더 건드린 정도라, 이번엔 색다른 시도를 해보고 싶다.

Day24 한 일

  • 음... 분명 많은 걸 한 것 같은데 밤을 꼴딱 새서 기억이 잘 안 난다. Day24는 어제였고, 잠은 오늘 아침 6시 30분이 되어서야 잘 수 있었다. 리덕스를 붙이고 파이어베이스와 연결하는 것도 강의자료만 보고서도 어찌어찌 되었던 것 같다. 중간에 자꾸 map으로 뿌려줘야 하는 리스트가 'not iterable'이라며 오류가 떴지만 그것도 오랜 구글링 끝에 극적으로 해결했다. 의외로 배포하는 데서 시간을 많이 잡아먹을 수 있다길래 배포까지 해놓고 잠을 자자는 생각으로 밤을 통째로 날렸다.

Day25 한 일

  • 점심 때 겨우 일어나서 컴퓨터를 켜 보니 배포는 무슨, 제대로 된 게 없었다. 뭔가 연결이 되긴 됐지만 크롬창 탭 부분에만 title이 겨우 뜨고 html로 치면 body 부분은 아무것도 출력되지 않는 상황이었다. 파이어베이스에서 배포하려던 게 잘 안 될 수도 있겠다는 걸 깨닫고는 바로 AWS S3로 전환했다. 파이어베이스로 고전하던 문제들은 S3에서는 만나지도 않았다. 그리고 생각보다 배포는 빠르게 끝났다.
  • 그런데 또 다른 문제가 생겼다. 내가 의도했던 모양새는, 데이터를 추가하는 페이지에서 추가를 완료하고 나면 다시 메인 페이지로 돌아오면서 방금 추가한 데이터를 포함한 데이터 리스트가 보여지는 거였다. 그런데 추가를 하고 나면 메인 페이지로 돌아가기는 하는데, 데이터가 아무것도 보이지 않았다. 새로고침을 하면 보이기는 했지만, 왜 그게 자동적으로 안 되는 거였을까. 혼자 고민하고 찾아봐도 도저히 안되겠어서 팀원들에게 코드를 보여주고 함께 머리를 싸맸지만 그래도 해결이 잘 되지 않았다. 결국 데이터를 추가하는 버튼을 눌렀을 때 페이지를 강제로 새로고침을 하는 window.location.reload();를 넣어 해결했다.
  • 그리고 또 다시 문제가 생겼다. 로컬에서는 위의 방법으로 해결이 되는 듯했지만, 배포하고 나서는 새로고침은커녕 아예 메인 페이지로 돌아가지도 않았다. window.location.reload();를 빼고 실행하면 새로고침은 안될지언정 메인 페이지로는 갈 수 있었다. 추가한 후 페이지 이동을 못하는 버전, 페이지 이동은 할 수 있지만 빈 화면을 보여주는 버전 중 택일해야 하는 상황이었다. 고민 끝에 데이터를 추가하고 나면 데이터를 추가했다는 팝업을 띄우고, 그 팝업에서 확인 버튼을 누르면 그제야 메인 페이지로 이동하는 방법을 생각해 냈다. 조금 번거로운 단계를 거쳐야 하지만 그래도 그 편이 보기에 나았다. 처음 의도했던 것만큼 깔끔하지는 않았지만 그래도 완성본을 제출할 수 있었다.
  • 얼마나 오래 도메인을 유지하게 될지 모르겠지만.. http://my-dic.shop/

내일 할 일

  • 내일부터 주특기 심화 주간이 시작인데, 어떤 과제가 어떤 식으로 주어지느냐에 따라 할 일이 달라질 것 같다. 새로운 과제가 주어지면 뭐가 됐든 과제 수행 계획을 세워봐야겠다.
  • 주특기 심화 과정에 해당하는 강의를 듣는다.

Day22 한 일

  • 주특기 과제로 구성한 두 컴포넌트 중 하나의 뷰를 거의 완성했다. 버튼 하나 고정시키는 것만 적용이 잘 안 됐다. 병원까지 장거리 이동을 해야 해서 하루 중 여기에 온전히 쏟을 수 있는 시간은 얼마 없었는데, 마지막의 마지막까지 그 버튼 때문에 머리를 싸매다가 결국 포기했다.

Day23 한 일

  • 다시 어제의 버튼에 매달리는 것부터 시작했다. 이걸 찾아봐도 안 되고 저 자료를 따라해도 안 되는데, 그걸 쓴 사람들은 거의 비슷한 방식을 사용하고 있었다. 보통 부모 태그에 position: relative를 주고, 고정 대상이 될 자식 태그에 position: absolute와 z-index 속성을 줘서 화면이 스크롤 되어도 상관없이 버튼은 같은 자리에 계속 떠 있게 만드는 거였다. 코드를 그대로 가져다 써도 안 먹혀서 온갖 시도를 다 해 본 후에야, position: relative를 바로 상위 태그가 아닌 한 단계 더 위의 태그에 주니 원하는 모양새가 나왔다. 이유는 아직 잘 모르겠다. 그렇게 장장 4시간에 걸쳐 버튼 하나를 고정했다.
  • 다음 컴포넌트의 뷰를 구성하는 건 버튼 붙이는 것보다 쉬웠다. 어차피 기본적인 스타일은 이미 만들어 놓은 컴포넌트와 통일성 있게 해야 하니 색상도 갖다 쓰게 되고, 세세한 것들에만 손을 대면 됐다. 그렇지만 CSS가 완성되고 나니 하루가 다 갔다.

내일 할 일

  • input에 입력되는 텍스트를 ref로 가져오는 기능을 구현한다. 그런데 input은 자식 컴포넌트에 있고 state는 부모 컴포넌트가 가지고 있는데, 이걸 어떻게 하지?
  • redux를 붙여서 데이터를 모은다.
  • firebase를 연결한다.

Day20 한 일

  • <프론트엔드의 꽃, 리액트> 강의를 4주차까지 이해가 잘 안 되지만 일단 꾸역꾸역 듣고, 5주차 강의는 프로그레스바를 채운다는 느낌으로만 들었다. 강의 내용이 머리에 들어와서 바로 튕겨나가는 기분이라 자괴감으로 치면 알고리즘 급이었다.

Day21 한 일: day-off 아닌 day-off

  • 리액트의 기본 개념조차 머리에 잘 남지 않아 따로 공부를 했다. 리액트를 이루는 가장 기초적인 단위가 되는 컴포넌트에서부터 리액트의 작동 원리를 익히고(DOM은 나중에 다시 또 찾아봐야 할 것 같지만), 무조건적으로 사용 방법만 외웠던 create-react-app에 대해서도 조금은 알게 되었다.
  • 낯설기만 했던 notion의 사용 방법을 우연한 기회에 알게 되어 페이지를 나름대로 신경써서 꾸며보기도 했다. 오늘 하루 중 가장 힐링이 됐던 시간.

내일 할 일

  • 주특기 기본 주차의 과제를 일단은 뷰 정도만 만들어 놓는다. 기능은 차차 추가하기로 하자.

오늘 한 일

  • <프론트엔드의 꽃, 리액트> 1주차 강의를 들은 후 숙제를 완료해 이번주의 S.A로서 제출했다.
  • 2주차는 강의까지만 들었다. 오늘 처음 접했으니 생소하기도 한 데다가 어렵기까지 하다. 이것도 시간이 지나면 적응할 수 있을까? 이해가 얼마나 되든 일단 그냥 해보고 있다. 구조나 코딩 방식 같은 것들은 흥미로운 건 분명하다. 내가 그 세부적인 사항들을 이해하지 못할 뿐..ㅠㅠ

내일 할 일

  • <프론트엔드의 꽃, 리액트> 2주차 숙제를 끝낸다. 모르거나 막히는 부분은 고민하지 말고 구글링하거나 숙제 해설 코드를 참고하도록 하자.
  • 3주차 강의를 모두 듣고 3주차 숙제까지 끝낸다(고 할 수 있으면 너무 좋겠다). 당분간은 알고리즘이나 교재 공부 같은 것들에는 욕심을 내지 말아야겠다. 내가 부족한 만큼 오로지 주특기에만 시간을 쏟아보자. 다른 거 안 한다고 큰일 안 난다.
  • 주특기 팀과 함께 정한 일정을 지킨다. 9시 출석, 12시 점심식사, 18시 저녁식사, 21시 진행상황 공유.

오늘 한 일

  • 공식적으로는 오늘까지 알고리즘 주간에 해당되지만, 사실상 알고리즘 개인공부는 어제로 끝났다. 오늘은 내일부터 있을 주특기 주간에 대비하여 주특기 언어의 기본 문법 강의를 듣는 날이어서, <JavaScript 문법 뽀개기> 강의를 완강했다. 파이썬에만 익숙한 상태라 비슷하면서도 다른 자바스크립트는 조금 헷갈리기도 한다.
  • 알고리즘 문제를 목표했던 10개까지는 풀지 못했다. 코드업에는 파이썬으로 풀 수 있는 문제가 많지 않은 것 같아, BOJ와 프로그래머스에서 총 7개의 문제를 풀었다. 프로그래머스는 에디터를 따로 켜놓을 필요가 없는 편리한 구조를 제공해 이용하는 재미가 있었다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 5장 '입력 양식 작성하기' ~ 7장 '텍스트를 표현하는 다양한 스타일'을 읽었다. 내일부터는 주특기를 익혀야 하니 지금처럼 많은 분량을 하루에 다 볼 수는 없을 것 같다. 빠르지 않은 진도에 연연하지 말고 적당히 나눠서 읽어 나가야겠다.

내일 할 일

  • 주특기 공부를 시작한다. (어떤 식으로 진행될지 아직 알 수 없어 구체적으로는 못 적겠다.)
  • 알고리즘 문제를 5개 푼다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 8장 '레이아웃을 구성하는 CSS 박스 모델'을 읽는다. 혹시 다 보지 못하더라도 스트레스 받지 말자.

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day17)  (0) 2021.06.24
항해02_알고리즘(Day16)  (0) 2021.06.23
항해02_알고리즘(Day15)  (0) 2021.06.22

오늘 한 일

  • BOJ 1002번 터렛 문제를 드디어 풀었다. 어제 그렇게 열 번 가까이 연속으로 틀렸던 이유가 단지 if / elif / else문의 순서 때문이었다니 너무 허탈했다. 결과값은 순서와 상관없이 모든 경우에서 똑같이 나올 것 같은데, 내 착각인 걸까?
  • CodeUp에서 파이썬 기초 100제를 모두 풀었다. 지금껏 BOJ에서 풀었던 문제들에 비하면 난이도는 낮았고, 세어 보니 100제가 아닌 98제였지만 아무튼 푸느라 보람 있고 알고리즘 문제를 풀면서 행복감을 느낄 지경이었다. 앞으로 이 사이트를 애용해야겠다!!! ╰(*°▽°*)╯
   # 리스트의 원소 모두 출력하기
    >>>a_list = ['H', 'E', 'L', 'L', 'O']		# 원소는 문자열이어야 한다
    >>>print(' '.join(a_list)
    H E L L O
  • <점프 투 파이썬> 6장 '파이썬 프로그래밍, 어떻게 시작해야 할까?'를 봤다. 요 근래 알고리즘이 워낙 손에 익기도 하고 해서 까다로운 부분 없이 쉽게 쉽게 넘어갈 수 있었다.
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 1장 '웹 개발 시작하기' ~ 4장 '웹 문서에 다양한 내용 입력하기'까지 봤다. 사전준비 과정에서 강의를 듣고 공부했던 부분이라 다시 한 번 복습한다는 느낌으로 가볍게 읽었다. 그 동안 사용해 온 파이참에서, 책에서 다루는 에디터인 vscode로 다시 돌아갔다. 금방 질리지 않게 마음에 드는 테마(Dracula official dark)로 설정해 두었다. 역시 웹페이지 디자인과 기능에 관여하는 건 재밌는 일이다. 다시금 프론트엔드에 대한 흥미를 확인하는 과정과도 같았다고나 할까. 과연 이 마음이 언제까지 유지될는지는...

내일 할 일

  • 자바스크립트 문법 강의를 완강한다.
  • 코드업에서 알고리즘 10문제를 푼다. (물론 기초 난이도로)
  • <HTML+CSS+자바스크립트 웹 표준의 정석> 5장 '입력 양식 작성하기' ~ 7장 '텍스트를 표현하는 다양한 스타일'을 본다.

오늘 한 일

  • 알고리즘 마라톤 40번까지의 문제 중 38번인 BOJ 1002 터렛 1문제만 남겨놓고 다시 풀었다. 이건... 한번 맞힌 적이 있는 문제인데도 답안을 제출할 때마다 계속해서 틀렸고, 결국 맞았던 답안을 켜놓고 비교해가며 수정해서 다시 제출했지만 또 틀렸다. 그래서 일단 오늘은 포기ㅠㅠ
  • <점프 투 파이썬> 5장 '파이썬 날개 달기'를 봤다. 지금껏 쓸 일도 없었고, 쓸 줄도 몰랐던 클래스와 패키지 같은 내게만 새로운 개념들이 나와서 유익했다. 내장 함수들도 사용 빈도가 높은 것들로 정리되어 있었다.
       # 생성자(Constructor): 객체 생성 시 자동으로 호출되는 메서드
        >>> def __init__(self, first, second):
           		self.first = first
            	self.second = second
        >>> a = FourCal(4,2)				# 객체 생성과 동시에 매개변수에 각각 4, 2 대입
        >>> print(a.first)
        4
        >>> print(a.second)
        2
        
        
        
        if __name__ == "__main__":			# 해당 파일을 직접 실행했을 때만 참이 됨
        	print(add(1, 4))
            print(sub(4, 2))
            
            
            
        try:
        	...
        except ZeroDivisionError as message:	# 오류 메시지 자체가 출력됨
        	print(message)
        except (FileNotFoundError, IndexError) as i:
        	print(i)​

내일 할 일

  • 알고리즘 마라톤 38번 BOJ 1002 터렛 문제 꼭 다시 풀고야 말겠다.
  • <점프 투 파이썬> 6장 '파이썬 프로그래밍, 어떻게 시작해야 할까?'를 본다. 

'항해99 > 02_알고리즘(Day5~18)' 카테고리의 다른 글

항해02_알고리즘(Day17)  (0) 2021.06.24
항해02_알고리즘(Day15)  (0) 2021.06.22
항해02_알고리즘(Day14): day-off  (0) 2021.06.21

+ Recent posts