이제 막 배우는 단계다 보니 새롭게 느끼는 점이 많아서 기록해 놓고 싶어서 써본다. 

1. 컴파일러 때문에 실수가 많이 준다.
  이건 django -> spring이 아니라 python -> java에 해당하는 점. python을 쓰다보면 오타를 냈다던가, 1 * 5을 생각하고, 코드를 짰는데 테스트하다보면 '1'이 들어와서 '11111'이 반환되는 경우들이 생긴다. 근데 java를 쓰다보면 오타라던지 동적 타입 때문에 생기는 실수들이 매우 많이 준다.

2. spring을 사용해보면 제공되는 무언가가 굉장히 많다...
 이거는 장점이 될 수도, 단점이 될 수도 있는 것 같다. django를 가지고 개발할 때는 환경세팅할 때 고려해야할 것이 많지는 않았던 것 같다. 근데 spring을 가지고 개발할 때는 이 spring만을 위해서 제공되는 무언가들이 굉장히 많은 것 같다. spring이 발전해서 spring-boot가 생겨났다던지, spring-boot-initiatior라는 페이지가 있다던지, test 툴들도 선택지도 많고, java를 간편하게 개발하도록 lombok이 있다던지...
 근데 선택지가 많아서 뭐를 선택해야 하는지 구글링이나 고민도 해야하고, 빌드 툴도 gradle, maven이 있고, 더 나아가서 버전에 따라 문법도 달라지더라. 아무튼 spring, java의 생태계는 엄청 넓은 것 같다...

사족으로 오랫동안 django, python을 사용하다가 spring, java를 사용해보니 장점이 많이 보이는 것 같기도 하다. 근데 항상 새롭게 배우면 장점이 많이 보이고, 오랫동안 사용하면 할수록 단점들이 보이는 것 같다. 이런 걸 많이 경험해보면 어떤 상황에 어떤 걸 선택해야하는지 안목도 생기지 않을까 하는 생각이 든다 :) 

가끔 django와 관련된 글들을 보면 django가 mvc 패턴을 따르도록(?) 되어있다고 되어있는데 반은 맞고 반은 틀린 말 같다.

왜냐하면 동작하는 방식은 mvc 패턴이 맞는데 사용하는 단어들은 mvc패턴과 약간 다르기 때문이다. spring을 보면 mvc 패턴을 따르게 만들면 사용하는 클래스들의 이름도 model, view, controller다. 근데 django에는 controller가 없다. view도 그 view가 아닌 것 같다(!) django에서는 urls, views들이 합쳐져서 controller의 역할한다고 봐도 무방할 것 같다. 그리고 mvc pattern에서 view는 사용자가 보는 걸 지칭하는데 django에서는 template이 그 역할을 한다. 이런 것들이 django mvc라고 검색을 하면 mvt(model, view, template)라는 단어가 같이 등장하는 이유라고 볼 수 있을 것 같다.

또 django에서는 단순히 template가 view만을 대체하는 게 아니라 forms를 포함시킬 수도 있다. django rest framework가 아닌 순수한 django를 사용하게 되면 template를 만들 때 forms.py를 이용해서 form을 만듦과 동시에 validation을 수행할 수도 있다.특히 이걸 잘 다루기 위해서 jinja2라는 언어(?)를 알아두면 좋다. spring에서는 thymeleaf라는 모듈이 있듯이. 근데 백엔드 개발을 하다보면 오히려 이런 template 언어를 다뤄야할 때 어려움을 겪는 것 같다...ㅋㅋㅋ

최근에는 python의 django에서 벗어나 다른 언어와 프레임워크를 맛보고자 spring을 공부하기 시작했다. java의 spring framework가 웹 개발에 있어서는 가장 주된 프레임워크라서 참고자료도 많고, 배워두면 좋을 것 같아 spring을 택했다.

어떤 프로젝트에 어떤 프레임워크를 선택할지는 회사 내부 개발자들의 스펙, 프레임워크의 장점과 단점 또는 지향하는 바 등을 보고 고르게 되는 것 같다. 띠라서 spring이 가장 많이 쓰이는 이유도 java 개발자 풀이 제일 크고, 프레임워크가 완성도가 높아서인 것 같다. 프레임워크의 성숙도가 높아서 spring을 배우면서 좋았던 점은 "이런이런 상황이 닥쳤을 땐, 이렇게 하는데 보통 괜찮더라" 이런 가이드라인이 있어서 좋았다. django를 배우면서 약간 아쉬웠던 점은 validation을 model 단에서 할 수도 있고, serializer 단에서도 할 수 있고, 여러가지 방법 들이 있는데 너무 다양해서 어느 것을 선택할지가 많이 고민이 되었다.(요즘에는 거의 하나로 통일시키고 있지만)

아무튼 django로 개발을 하면서 어떤 view들을 만들 때 앞에서는 validation이나 authorization을 해야하고, 마지막에서는 pagination들을 해야하는 경우들이 많이 발생하는데 앞의 authorziation을 python의 decorator을 이용해서 개발을 했었다. 근데 spring을 배우면서 aop(aspect oriented programming)이라는 패러다임(?)을 보게 되었는데 이게 사실 python decorator 안에 wrapper 함수와 매우 비슷하더라. 근데 spring-aop 모듈은 그보다 더 나아가서 after, before, around 등으로 시점을 지정해줄 수도 있고, @annotation, bean과 같은 파라메터로 어떤 곳에서 쓸지도 한 번에 지정할 수도 있어서 놀라웠다.

특히나 intellij에서 spring-aop가 적용된 곳을 한 번에 볼 수 있게 해준다거나, 어떤 method에 지금 spring-aop가 적용되어 있다는 사실들을 보여준다거나 하는게 꽤나 편리하게 작용할 것 같았다. 이런 것들을 볼 때마다 intellij가 참 잘 만들어졌고, 왜 다들 intellij로 개발을 하는지 알 것 같았다.

 

0. 후기

HSK 3급을 딴지 어언 7개월.

중국어에 관심이 조금 생기기도 하고 중국어 공부가 꽤나 재밌던 기억이 있어서 8월쯤 공부를 시작했습니다.

진짜 한달 빡세게 하고 나서 시험을 봤는데 걱정했던 것보다 시험이 쉬웠습니다.

그래서 HSK3급이 있거나 그에 준하는 실력을 가지신 분들은 한달이면 충분히 가능하십니다:)

 

 

1. 공부방법

각 부문의 공부방법은 밑에서 서술하기로 하고, 일단 저는 중국어 학원을 다녀본 적이 없습니다.

그래서 다 독학으로 했는데 HSK3급을 공부했을 때는 Coursera에서 강의를 들었습니다.

https://www.coursera.org/specializations/hsk-learn-chinese?

 

Learn Chinese: HSK Test Preparation | Coursera

Learn Learn Chinese: HSK Test Preparation from 베이징 대학교. This specialization consists of three elementary language courses, aims to improve your Chinese language skills effectively and systematically. This specialization introduces everyday ...

www.coursera.org

 

여기서 도움을 받았는데 중국어를 영어로 가르치기 때문에 살짝 불편합니다...

4급을 공부할 때는 일단 어휘가 중요하다고 생각해서 단어장 위주로 했습니다.

이 단어장으로 공부했는데 해커스 단어장으로 해도 상관 없을 것 같습니다.

그냥 서점에서 이 책이 좀 보기 좋고 친근해 보여서 샀습니다.ㅋㅋ

1-1 듣기(听力)

제가 듣기 점수가 조금 낮은 이유이긴 한데 유튜브로 공부를 했습니다.

유튜브에 보면 해커스중국어 채널이나 롱차이나중국어(김미숙)채널을 보면

쉬운 문장들을 들을 수 있도록 여러 동영상을 찍어 놓아서 보면서 듣기 공부를 했습니다.

그리고 시험에 임박해서 모의고사를 한두번 봤고요.

 

1-2. 독해(阅读)

저는 하루에 두과씩 약 20일동안 한 권을 떼고, 시험볼 때까지 빠르게 모르는 단어만 반복해서 공부했습니다.

그리고 단어 밑에 보면 예문이 있는데 쓰진 않더라도 꼭 한 번씩 읽어봤습니다.

이 부분이 저한테 가장 쉬웠는데 제가 단어를 빡세게 외웠기 때문인 것 같습니다.

정말 단어만 다 알면 어려운 문제가 거의 없습니다.

문장 배열이 조금 어려운데 접속사를 잘 알면되는데 중국어에는 접속사가 많아서인지 어렵더라구요.

 

1-3. 쓰기(书作)

쓰기도 거의 단어장의 예문을 보면서 공부했는데

시험에 임박했을 때 해커스 hsk5급 한번에 끝내기를 사서 문법 부문만 조금 봤습니다.

시험문제에 있는 예시만 봐도 간단한 문장만 만들어도 점수를 잘 주는 것 같습니다.

너무 어렵게 생각하지 않으시고, 초등학생 수준의 문장만 만들 수 있으면 됩니다.

+ Recent posts