inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

DNS 서버 관련 질문입니다

해결됨

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요 영한님! 다름이 아니라 DNS 서버 관련해서 강좌를 듣다가 궁금한 부분이 있어 질문 남깁니다 DNS의 IP가 교체되었을 경우는 밑의 다른 분 질문에서 도움을 얻었는데 아직 의문이 가시지 않는 부분이 있어서요...! DNS 제공자가 많은걸로 알고있습니다. Google, 1.1.1.1, IBM, KT, SKB... etc) 컴퓨터상에는 기본 DNS와 보조 DNS 두가지만 기본적으로 입력하게 되어있는것으로 알고있어서... 질문드립니다! 모든 회사의 DNS에 세상에 현존하는 모든 IP의 도메인 네임이 저장되어 있을 것 같지는 않은데요, 만약에 시스템상에 등록된 Domain Name Server에 찾고자하는 Domain Name에 해당하는 IP가 없을 경우 DNS는 이를 어떻게 처리하는지 궁금합니다!

  • network
김윤식 댓글 1 좋아요 0 조회수 367

안녕하세요 질문입니다 :)

해결됨

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요 영한님 항상 양질의 강좌 촬영해주셔서 감사합니다 :) HTTP를 다시 복습하고 있는데 질문이 있습니다 :) PORT의 경우 앞에서 같은 IP에서 프로세스를 구분하는 역할을 한다 즉, 클라이언트 내에 돌아가는 많은 애플리케이션들은 각자 PORT를 갖고 있고 이를 통해 구별되게 통신한다라고 이해했는데 뒤에서 FTP - 20, 21포트, TELNET - 23포트 HTTP - 80포트 HTTPS - 443 포트라고 따로 존재한다면 이 포트들은 위의 FTP HTTP 프로토콜을 포함하는 패킷의 처리를 위해 OS나 시스템상에 존재하는 애플리케이션의 고정 PORT라고 이해하면 될까요? 감사합니다 :D

  • network
김윤식 댓글 1 좋아요 0 조회수 248

TCP 연결이 일어나는 부분이 이해가 안갑니다!

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요. 우선 좋은 강의 감사합니다. 자료를 찾아봐도 속시원히 답해주는 곳이 없어서 질문드립니다 ㅠ. 강의 자료에 TCP/IP 단계에서 3-way handshake를 거쳐 연결을 한 후에 패킷을 생성하고 물리계층으로 전달한다. 이렇게 되어 있는데요. 마치 물리계층을 거치지 않고 연결이 일어나는 것처럼 느껴져서 정확히 어떤 과정으로 일어나는지 헷갈립니다. 제 생각에는 syn, syn-ack, ack도 어쨋든 비트열로 이루어진 정보일테니 물리적인 전선을 통해 전달될거고, 그럼 이 정보도 물리계층을 거쳐서 전달될 것 같은데, 그럼 3-way handshake를 위한 신호 정보도 패킷에 담겨서 물리계층을 통해 전달되는 것이 맞나요? 만약 그렇다면 웹 브라우저에 www.google.com을 검색하면 HTTP 메시지가 포함된 패킷이 전달되기 전에, 연결을 위한 패킷이 먼저 왔다갔다하고, 연결이 확립되면 요청 패킷이 전달된다.이렇게 이해하면 될까요?

  • network
owesomeo 댓글 2 좋아요 17 조회수 430

nbextensions 설치 완료 후

미해결

공공데이터로 파이썬 데이터 분석 시작하기

안녕하세요 강사님. nbextensions 설치 후 화면을 보았는데, 강의 화면과는 달리 선택할 수 있는 항목이 별로 없더라고요. 1강에서 강사님께서 보여주신 목차 기능 또한 보이지 않는 상황입니다. 다른 분이 질문한 글을 보면서 체크 표시 해제도 해보고, refresh도 해보았는데 그 상황 그대로입니다. pip과 conda를 이용해서 둘 다 재설치를 해봤는데도 마찬기지인 상황입니다. 혹시 해결책을 알 수 있을까요..?

  • numpy
  • pandas
  • python
댓글 2 좋아요 1 조회수 473

제로초님 오랜만에 질문하나만 올리겠습니다.

미해결

[리뉴얼] React로 NodeBird SNS 만들기

개인 토이 프로젝트를 하나 하고 있는데요, 혹시 next.js에서 도메인 라우팅 하는 방법이 있나요? 문제가 뭐냐면 제가 만든 토이 프로젝트가 있는데 http://www.hubfoodlink.com 으로 접속해서 해당 정보를 클릭하면 리엑트 컴포넌트 모달창이 띄워지는데, http://hubfoodlink.com 으로 접속하면 접속은 되는데 정보 클릭 시 리엑트 컴포넌트 모달창이 안뜨고 An unexpected error has occurred. 라고 떠서 문제가 발생되네요 ㅠ 아니면 http://hubfoodlink.com 접속시 www을 붙여서 http://www.hubfoodlink.com접속이 되게 하는 방법이 있을까요? 물론 강의와 관련없는 질문이긴한데 몇일간 찾아보고 고민해봐도 해결되지 않아서 염치불구하고 질문을 올려봅니다. 죄송합니다 ㅠ

  • 제로초
  • next
  • react
  • next.js
  • redux
  • express
  • nodejs
  • Next.js
junil jeong 댓글 1 좋아요 0 조회수 259

chapter 6-2 리스트컴프리헨션 질문

해결됨

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 예제에서 리스트컴프리헨션을 temp2에 할당할 때, generator_ex2( )가 실행되면서 인자는 리스트에 담기고, start, continue, end가 출력돼서 저렇게 뜨는건가요? 뭔가 머릿 속으로는 아는 것 같은데, 막상 글로 표현하려니 모르는 것 같네요;;

  • 리스트컴프리헨션
  • django
  • python
TheKoo 댓글 1 좋아요 0 조회수 178

Buffer와 Packet에 관한 의문

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ 강의를 들으며 세세한 것 보다 전체적인 흐름을 잘 이해하려고 노력중입니다. 몇 가지 흐름을 파악하다 의문이 생겨서 질문 드립니다. Q.1 PacketSession 클래스의 OnRecv함수입니다. while문의 첫번째 if문을 보면 일단 헤더의 size는 파싱할 수 있는지 체크를 하고 있는데요, 잠시 TCP의 성질을 보면 TCP통신의 경우 혼잡제어를 통해 서버가 혼잡하면 일부만 보내고 다시 원활해지면 나머지를 보낸다고 하셨습니다. 그렇다면 혼잡시에 패킷의 일부만 전송되어 SIZE만 보내진다거나 헤더를 제외한 데이터만 전송되는 경우도 있나요? 일부만 전송한다는 얘기가 패킷단위로 나눠서 보낸다는 말이지 패킷을 쪼개서 보내지는 않는다는 뜻인건가요? Q.2 100명의 유저가 같은 장소에서 모두 움직이면 10000개의 패킷이 전송될것이고, Send를 호출하는 부분이 데이터 복사와 같은 무거운 작업들이 많이 일어나니 컨텐츠단에서 SendBuffer라는 대용량 버퍼를 만들고 거기에 차곡차곡 넣어서 유저당 한번씩만 전송하도록 하여 총 100개의 패킷만 전송하도록 하는 것이 목적인가요? 제대로 이해했는지 아리송합니다 ㅠㅠ Q.3 SendBuffer 클래스가 있고 사용하기 편하게 인터페이스를 뚫어준 SendBufferHelper 클래스가 있는데 애초에 SendBuffer를 사용하는 쪽에서 편하게 인터페이스를 뚫어줄 수도있는데 별도 SendBufferHelper클래스를 사용하시는 이유가 있나요?!! 선생님처럼 Helper Class를 작성하면 단기적으로, 장기적으로 어떤 이점이 있는지 궁금합니다. 아직 이와같은 설계가 너무 낯설어서 많이 배우고 알고싶습니다! Q.4 SendBufferHelper에서 Open시 요구한 사이즈보다 버퍼 여유공간의 크기가 작으면 new 를 통해 새로운 버퍼를 할당하게 되는데요 이전에 사용하던 버퍼는 누군가 잘 사용하다가 더이상 참조가 없어지면 가비지 컬렉터에 의해서 메모리 정리가 잘 되는건가요? 너무 쿨하게 new로 새로운 메모리 공간을 할당해서 조금 의문이 생기네요. SendBuffer의 경우 전송후에 더이상 참조할 일이 없기에 가능한 Send만의 특징이겠죠?

  • unity
  • C#
  • network
댓글 4 좋아요 0 조회수 693

ArraySegment 질문입니다

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ ArraySegment 의 신기한 점을 발견하고 질문드립니다. Q.1 Session.cs에서 RecvBuffer 객체를 생산하고 다음과 같이 _recvArgs.SetBuffer의 인자로 WriteSegment의 반환값을 넣어주고 있습니다. WriteSegment의 반환값이 _buffer의 값을 이용해 새로운 인스턴스를 생성했다고 생각했습니다. 왜냐면 new를 통해 만들었으까요.. 일종의 값의 복사만 일어났다고 생각을 했거든요.. 근데 로직상 _recvBuffer.WriteSegment의 반환값이 RecvBuffer 객체의 맴버변수인 _buffer에도 영향을 주기에 가능하다고 생각하니 단순 값의 복사만 일어난건 아니라고 생각했습니다. 실제 테스트 해보니 _buffer를 통해 만든 newBuffer의 값을 변경하니 _buffer의 값 또한 변경됐습니다.. 이게 어찌 가능한 일인가요? ArraySegment 생성자의 첫번째 인자가 신비로운 문제의 해답인가요?

  • network
  • C#
  • unity
댓글 6 좋아요 1 조회수 904

세션과 소캣 질문

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ 세션과 소켓에 이 정확히 무엇인지 이해가 잘 안돼서 질문드립니다. 제가 이해한걸 정리하면 소캣은 서버와 클라가 통신할 수 있는 수단 혹은 통로라고 생각합니다. 그렇다면 세션은 무엇인가요? 소캣을 포함하며 구조적으로 설계가 잘 된 사용자 정의 인터페이스라고 봐도 되는건가요?

  • unity
  • C#
  • network
댓글 1 좋아요 4 조회수 291

Disconnect 함수의 임계영역

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ 궁금증이 생겨 질문드립니다. 강의 21분에 "Disconnect 함수를 동시 다발적으로 실행하거나 같은 Thread가 두 번 한다면" 이라고 말씀하셨습니다. Q.1 Disconnect 함수를 동시다발적으로 실행할 수 있나요? 다르게 말하면 DisConnect함수가 실행하는 내용이 임계영역인가요? 여러번 고민해봤는데 Disconnect를 호출하는 OnAcceptHandler는 인자로 스레드마다 독립적으로 하나씩 가지고 있는 clientSocket 을 받고 clientSocket으로 Session.Start( clientSocket ); 을 통해 Session 클래스의 객체를 초기화 해주기에 임계 영역이 아니라고 생각합니다. 후자로 말씀하신 하나의 Thread에서 실수로 코드에 두 번 기입해서 Disconnect를 하지 않는 이상 별다른 문제가 없다고 생각합니다. Q.2 매번 코드를 작성할 때마다 임계영역인지 아닌지 고민하면서 코딩하다 보면 머리가 터질 것 같습니다. 선생님께서는 눈에 보이는 임계영역에만 상호배제를 해주고 후에 배포 전에 테스트 단계에서 문제가 발생하면 그때 수정하는것도 현명한 방법이라고 생각하시나요? 조언 부탁드립니다!!

  • unity
  • C#
  • network
댓글 2 좋아요 1 조회수 272

Parallel.Invoke 호출시 메인스레드 사용 이유

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 의아한 점이 생겨 질문드립니다. 메인에서 MaxThread의 수를 3개로 지정한 상태에서 Invoke를 호출하고 ManagedThreadId를 확인하면 Invoke시에 메인 스레드인 1번을 사용하는 이유가 무엇인가요?.. MaxThread를 (1,1)로 설정해도 무조건 한 번은 메인 스레드를 사용하고 그 다음부턴 풀에서 스레드를 꺼내쓰더라구요.. 왜 한 번은 메인스레드가 사용되는건가요?

  • C#
  • unity
  • network
댓글 1 좋아요 0 조회수 341

패킷 트레이서 로그인 오류가 떠요 ㅜㅜ

해결됨

20년 경력자의 알기 쉬운 컴퓨터네트워크

패킷 트레이서를 깔았는데 처음 로그인 창이 저렇게 되어서 안뜹니다 ㅜㅜ 어떡하나요..? goodbyedpi나 browsec dpn도 깔아봤는데두 계속 저렇게 연결할수 없다네요,, 관련 문의는 1:1 문의하기를 이용해주세요.

  • network
  • protocol
Banana is 댓글 3 좋아요 0 조회수 1331

메모리 할당관련 질문

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ 강의를 듣다가 여러 궁금증이 생겨 질문드립니다. Q1. 메모리 할당에 관한 질문입니다. 질문드리기 앞서 무성의한 변수 작성에 사과드립니다. static 변수(a)는 Data영역에 멤버변수(b)는 Heap영역에 멤버함수(Func)는 Code영역에 멤버함수 내에 존재하는 지역변수(c)와 t2는 Stack영역에 할당된다고 알고있습니다. 실제 Main에서 Test라는 클래스를 인스턴스화후에 메모리 구조에 대해서 몇 가지 질문드리고 싶습니다. Test t2 = new Test(); 이 코드를 실행하게 되면 Stack에 t2라는 변수가 생기고 Heap에 할당된 메모리를 가리키고 있을거라 생각합니다. 궁금한건 Func함수입니다. 질문속의 작은 질문들을 정리해서 말씀드리면 Q1.1 t2라는 변수를 통해서 저희는 멤버변수인 b에도 접근하고 Func라는 함수도 호출합니다. 다만 t2는 heap의 주소를 가리키는 포인터인데 heap영역에 있지 않는 Func라는 함수를 어떻게 가리키는건가요? 한 가지 추정을 해보면 heap어딘가에 Func의 Stack 시작점 주소를 저장할 공간이 있고 Stack에 함수가 할당되면 그곳으로 매핑을 시켜주는 건가요? Q1.2 Code영역이 궁금해서 검색하다가 지역변수는 함수 호출시에 Code영역에 저장되는 함수 정의를 활용하여 초기화 된다. 라는 글을 발견했습니다. Code영역에 함수가 정의된다는것과 Stack에 함수가 할당되는게 구체적으로 어떤 연관성이 있는지 이해가 잘 안됩니다.. 정의를 활용한다는게 어떤 의미안가요? Q1.3 클래스 내부에서 Static Test t1 = new Test(); 코드를 실행해봤습니다. static변수는 클래스가 메모리에 올라갈때 할당 된다고 배웠는데 t1이라는 변수가 Data영역에 할당되자마자 Heap에도 데이터가 할당되는건가요? Q1.4 이러한 메모리 할당에 대한 의문이 생기면 실제로 실험해보고 검증하고 싶은데 Stack Heap Data Code 영역을 실제로 확인할 수 있는 방법이 무엇인지 모르겠습니다 ㅠㅠ.. 디버깅처럼 이러한 것들을 확인할 수 있는 방법이 있을까요..?? Q2. ReaderWriterLock에 관한 질문입니다. WriteUnLock 부분에서 Exchange를 사용하지 않고 _flag = EMPTY_Flag;를 해주면 문제가 발생할까요? 제 스스로 고민해본 결과 WriteUnLock은 어쨋든 Lock을 잡은 상태에서만 호출을 한다고 가정했으니 임계영역이 아니라고 생각했습니다. 재귀적으로 호출을 해도 별 문제가 없다고 생각한건 싱글스레드가 독보적으로 호출할 수 있는 영역이니까요. ReadUnLock의 경우는 여러 스레드가 동시에 값을 변경하니 Interlocked.Decrement(ref _flag);를 호출하는게 맞다고 생각하는데 WriteUnLock을 _flag = EMPTY_Flag;이와 같이 작성해도 별 문제가 없을까요?

  • C#
  • network
  • unity
댓글 1 좋아요 1 조회수 529

Thread와 Context Switch에 대한 질문

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요 ㅎㅎ강의 잘 듣고 있습니다. Q1. 유저레벨 스레드? 커널레벨 스레드? 선싱님 강의를 수강하니 운영체제 수업에서 배운 내용들이 하나 둘씩 기억나서 매우 반갑네요. 제가 기억하는 내용을 적어보면, 일반적으로 IO나 인터럽트에 의해 발생하는 프로세스 문맥 교환과 매우 유사하게 쓰레드도 레지스터나 캐시의 정보들을 주 메모리로 옮기는 과정을 운영체제가 도맡아 담당하게 됩니다. 때문에 쓰레드간의 문맥 교환시에 Kernel모드로 진입한다고 말씀하신거겠죠. 궁금한점은 쓰레드의 구현 방식에 따라? (아마 유저 레벨 쓰레드와 커널 레벨 쓰레드로 구별하는 것 같습니다.) 문맥 교환의 비용이 차이가 난다고 어디선가 배운 기억이 납니다. 본 강의에서 사용한 쓰레드는 생성시 라이브러리 함수를 사용했고.. 아마 내부적으로 시스템 콜을 호출했고 결과적으로 유저가 아닌 Kernel이 스케쥴링하니 커널레벨 스레드인 것 같은데요.. 그렇다면 유저레벨 스레드라는건 어떤걸까요? 유저(개발자)가 문맥교환을 담당하고 스케쥴링도 담당하는, 모든걸 개발자가 도 맡아하는 스레드인가요? 실제 유저 레벨 스레드가 많이 사용되는 경우는 어떤 경우인가요? Q2. AutoResetEvent는 Kernel단으로 내려가서 문맥교환으로 인해 spinlock보다 성능이 저하될 수 있다고 말씀하셨습니다. 궁금한건 sleep 혹은 yield또한 cpu의 점유권을 포기한 상태에서 다른 스레드를 실행할 수 있기때문에 kernel로 진입후에 문맥교환이 발생하고 이에따른 성능 저하가 일어날 수 있을까요?

  • unity
  • network
  • C#
댓글 1 좋아요 0 조회수 456

비주얼 스튜디오2

미해결

ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: 'C:\\Users\\leehb\\AppData\\Local\\Temp\\pip-uninstall-87624jrp\\pip.exe' Consider using the `--user` option or check the permissions. 이렇게 나왔다가 pip install datetime WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617> distutils: c:\python38-64\Include\UNKNOWN sysconfig: c:\python38-64\Include WARNING: Additional context: user = False 이렇게 뜹니다. 이거 어떻게 해결해야할까요?

  • python
sans4976 댓글 0 좋아요 0 조회수 143

Thread의 실행순서를 잘 이해한건지 모르겠어요

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

처음에 메인에서 t.Start();가 Console.WriteLine("Hello World!")보다 먼저 와 있어서 제 생각에는 먼저 Hello Thread!가 먼저 찍힐 줄 알았는데, 실행해보면 Hello World!가 먼저 찍히고 Hello Thread!가 찍히더군요. 그렇다는건 이 Thread라는 일꾼은 메인이 끝난 뒤에야 실행된다는 건가요??

  • C#
  • unity
  • network
댓글 1 좋아요 3 조회수 434

fdr.StockListing("KRW") 불러올때 오류가 납니다.

미해결

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

ValueError: unknown format code 'd' for object of type 'str' 이라고 뜨네요 krx/listing.py 에서 df_listing['Symbol'] = df_listing['Symbol'].apply(lambda x: '{:06d}'.format(x)) 이부분에서 x값이 string으로 들어가서 문제가 생기는듯 합니다. 버전은 선생님 버전이랑 같은데 뭐가 문제인지 몰겠네요

  • pandas
  • python
  • numpy
  • 웹-크롤링
  • plotly
  • seaborn
  • 웹 스크래핑
  • matplotlib
고형진 댓글 2 좋아요 1 조회수 660

df["ListingYear"] >> df["ListingDate] 로 변경

해결됨

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

강의에서는 ListingYear 로 된 부분이 있는데, 이 부분을 ListingDate로 변경해야 출력이 됩니다. (>> KRX의 index가 이름이 변경되서 그런 것 같네요)

  • 오타
  • 웹-크롤링
  • numpy
  • pandas
  • python
  • 웹 스크래핑
  • plotly
  • seaborn
  • matplotlib
브루브루 댓글 1 좋아요 2 조회수 302

영속쿠키에 대해서 질문드립니다~!!

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요 영한님~~ 항상 좋은 강의 정말 감사합니다~ㅎㅎ 다름이 아니라 쿠키 관련해서 질문 드릴 부분이 있어 이렇게 질문을 남깁니다~ 쿠키 라이프사이클에는 세션 쿠키와 영속 쿠키가 있는대 세션 쿠키는 서버에서 발급한 세션아이디를 발급받아 저장하는 쿠키이며 다음 요청 시 해당 쿠키에 저장된 세션아이디를 통해서 세션에 저장된 정보를 가져간다고 이해하였습니다. (그러므로 브라우저가 종료될때 세션이 종료되므로 쿠키도 사라진다.) 그렇다면 영속 쿠키는 브라우저가 종료되어도 해당 쿠키는 살아있으므로 세션아이디를 따로 발급을 안받는건가요~? 그렇다면... 쿠키에 저장된 정보를 서버에 전송을 따로 안하고 클라이언트 측에서만 처리하는지가 궁금합니다🙏🏻

  • network
JuNu 댓글 1 좋아요 7 조회수 553

[질문] 3.3 네이버금융 개별종목 수집 강의 중 파일 자동 저장 코드에서 디렉토리 지정 방법

미해결

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 선생님 3.3 네이버금융 개별종목 수집 강의 중 파일 자동 저장 코드 에서 저장할 디록토리를 지정하는 방법 있을까요? 수동으로 저장할때 보통 df.to_csv("../data/test.csv") 이런식으로 저장디렉토리에 저장 하는데 변수로된 파일명을 ""안에 입력하니 에러가 나서 다른 방법이 있는지요? 항상 강의 잘 듣고 있습니다. 감사합니다.

  • python
  • pandas
  • python
  • numpy
  • 웹-크롤링
  • seaborn
  • 웹 스크래핑
  • matplotlib
  • plotly
마루 댓글 1 좋아요 1 조회수 233

인기 태그

인프런 TOP Writers

주간 인기글