안녕하세요 SendBuffer까지 따라 해보고 전체적인 흐름을 그려보는 도중 궁금한 점이 생겨 질문드리게 되었습니다. Listener 소켓에서 OnAcceptCompleted 함수의 마지막에서 다시 등록(RegisterAccept)을 해주는데요. 이 부분에 무한 루프를 넣어서 다시 등록하는 과정을 거치지 않도록 해보았습니다. 따라서 더미 클라이언트 한 명이 OnAcceptCompleted에서 RegisterAccept를 호출하지 못하기 때문에 더미 클라이언트를 하나 더 실행했을 때 동시 접속이 안되어야 할 것 같은데 접속이 되더군요. 질문1) 위와 같은 상황은 _listenerSocket.Listen 때문이 맞나요? 이 부분을 1로 수정하니 정상적으로 동시 접속이 안되더군요. 질문2) 만약 맞다면 Listen 함수를 통해 동시 접속자 수를 컨트롤하나요? 질문3) Listen(10)을 넣어 10명의 동시 접속자가 있다면 최소 필요 쓰레드의 수는 10개인가요? 즉, 쓰레드의 최소 필요 개수 = 접속자 수 = 세션 수 인가요? 질문4) 윗 내용이 맞다면 많은 수의 쓰레드가 존재하여도 문제없나요?(예를들어 동시접속자가 1000명이라면 최소 1000쓰레드 이상) 읽어주셔서 감사합니다.
코드입니다. 피드백 부탁드립니다~ function solution ( s ) { let answer ; let max = Number . MIN_SAFE_INTEGER ; const sH = new Map () ; for ( let val of s ) { sH . set ( val , val . length ) ; } for ( let [ key , val ] of sH ) { if ( max < val ) { max = val ; answer = key ; } } return answer ; } let str = [ ' teacher ' , ' time ' , ' student ' , ' beautiful ' , ' good ' ] ; console . log ( solution ( str )) ;
안녕하세요! 정상적으로 vultr 에서 배포를 하고 작동까지 잘 되는것까지 따라왔습니다! 근데 문제가 생겼습니다. 싫어요 기능을 추가하고 싶어 models.py 에 dislike 컬럼을 추가하여 migrate 시킨후 실행하려는데 오류가 생겨서 migration 폴더 안에 있는 파일들을 __init__.py 만 남겨두고 전부 삭제한 후 다시 migrate 시켜줘서 python3 manage.py runserver 로 실행시켜줬더니 싫어요 기능이 추가 되어서 잘 작동하여 github 에 push 해준후 docker image build -t django_test_image:6 . 라는 명령어를 통해 image 도 생성시키고 stack 도 만들어 똑같이 돌아가게 했는데 서버 500 에러가 뜨네요. python3 manage.py runserver 에서 하면 잘 되서 뭔가 DB문제 인거 같은데 문제가 뭘까요? DB는 초기화해도 상관 없는데 어떻게 해야 할까요? 이런식으로 migrations 폴더에 0001 파일을 보면 dislike 는 잘 생성된걸 볼 수 있는데 무슨 이유때문에 서버 500 에러가 뜨는걸까요? DB를 잘못 만져준건가요..? 감사합니다!
뒤로가면 나오겠지 하고 계속넘어갔는데 나오지 않아서 추가 질문합니다. 설계와 구현에 나뉘어 인터페이스 / 구현체인 클래스로 나누고 실제 클라이언트 코드에서 코드 수정 없이 AppConfig파일만 바꾸면 코드의 교체를 할 수 있도록 예제가 구성이 되었는데요. 예를들어서 자동차 라는 인터페이스가 있고 전기차 , 석유차 라는 클래스가 있다고 했을 경우 스프링 코드를 사용하지 않고 자바로 했을때 자동차 car = new 석유차(); -> 자동차 car = new 전기차(); 이렇게 하면 코드가 바뀌게 되잖아요? 근데 타입이 자식클래스가 아닌 부모 인터페이스 일 경우 자동차 (부모) 인터페이스에 공통으로 있는 기능을 사용 할 수 있지만 전기차(자식) 클래스에만 있는 기능은 "car"를 통해 사용하지 못하는 것 아닌가요? 그럼에도 불구하고 자료형을 부모타입으로 하는 이유가 궁금합니다.
안녕하세요 질문이있어서 글 남깁니다. 컨테이너 기반으로 서버 구축시에 쿠버네티스를 통하여 스케일 아웃이되어 트래픽 분산을 할 수 있으며 사용 리소스에 따라 컨테이너를 오케스트레이션하여 비용을 절감시킨다고 알고 있습니다. 그러나 생각보니 실질적으로 가상머신 내부의 컨테이너 기술을 사용하는거고 가상머신 자체를 스케일다운을 하지 않는 이상은 컨테이너 영역에서의 오케스트레이션으로 비용절감이 의미가 있을지 궁금합니다. (컨테이너 기반 서버의 수는 리소스에 따라 감소하나 실제 윗단 가상OS의 스케일 다운은 자동적으로 처리가 안되기 때문입니다.) 이에 관련하여 왜 컨테이너를 사용시 비용이 절감되는지 자세한 이유를 설명듣고 싶습니다. 감사합니다.
안녕하세요. const test = function () { console.log('test 입니다.') } 함수표현식으로 된 코드가 있습니다. window 오브젝트를 사용하여 접근을 하고 싶습니다. 개발자도구로 Scope에서 Script 에 적용되어 있는거 까진 확인했습니다. window 오브젝트를 통해 함수표현식 코드를 실행하려고 한 이유는 팝업창(자식창)에서 부모창에서 선언된 함수를 호출하려 합니다. ex) window.opener. test(); 만약 window 오브젝트에서 Script Scope를 접근할 수 없다면 팝업창(자식창)에서 부모창의 함수를 호출하는 방법을 알고 싶습니다.
안녕하세요. 강의 수강중에 arm 관련 환경 문제로 강사님 강의에서는 x86 이 아닌 arm 으로 so 파일 디버깅이 잘 되시는거같은데... 저는 android_server 실행이 잘 안되서 문의 드립니다. IDA 로 so 파일디버깅 하고자 하는데, 오류가 발생하여 실습 진행이 안되고 있습니다. 저의 실제 안드로이드 기기의 abi 는 armeabi-v7a 입니다. [ro.product.cpu.abi2]: [armeabi] [ro.product.cpu.abi]: [armeabi-v7a] 실제 기기에서 anroid_server 실행 시 아래와 같은 오류가 발생 합니다. shell@android:/ $ /data/local/tmp/android_server /data/local/tmp/android_server reloc_library[1307]: 14581 cannot locate '__open_2'... CANNOT LINK EXECUTABLE 255|shell@android:/ $ /data/local/tmp/android_server64 /data/local/tmp/android_server64 /system/bin/sh: /data/local/tmp/android_server64: not executable: magic 7F45 1|shell@android:/ $ /data/local/tmp/armlinux_server /data/local/tmp/armlinux_server /system/bin/sh: /data/local/tmp/armlinux_server: No such file or directory 에뮬레이터는 보통 x86 이기때문에 arm 으로 디버깅하기위한 방법을 찾고있습니다. 실제 기기에서 android_server 동작 방법 또는 에뮬레이터에서의 armeabi-v7a 설정 이 되면 될거같은데.... 제가 할 수 있는 조치사항 문의 드립니다.
안녕하세요. 영한님의 강좌에서는 컨트롤러에서 DTO를 리턴하는 방식을 사용하고 있더라구요. 그런데 인터넷을 찾아보니 ResponseEntity로 한번 감싸서 리턴하는 방식도 종종 사용하는 것 같습니다. (ResponseEntity를 사용하면 응답코드, 헤더등과 함께 좀 더 세밀하게 리턴값을 조절할 수 있기 때문인 것 같네요) 실무에서는 DTO를 그대로 반환하는 방식과 ResponseEntity로 감싸서 반환하는 방식 중 어떤 방식을 사용하나요? 감사합니다 :)
안녕하세요. 추후 확장성을 위해 api versioning을 진행하려고 합니다. ``` /api/v1/ - MemberController - PostController ``` 위처럼 v1폴더 내부에 총 2가지의 컨트롤러가 있다고 가정을 할게요. 그리고 URL을 /api/v1/members|posts 로 맞추고 싶습니다. <질문> 1. 모든 URL에 /api라는 prefix를 붙이고 싶습니다. 따라서 application.yml에 server : servlet : context-path : /api 로 설정해두었는데 실무에서 사용하는 방법일까요? 2. 각 컨트롤러에 @RequestMapping(value = "/v1/members|posts") 로 설정해두었는데 버저닝을 이렇게 진행하는게 실무에서 사용하는 방법일까요? 감사합니다.
안녕하세요. DTO 분리에 관한 질문입니다. MemberController에 대한 Request/Response DTO들을 만든다고 가정하겠습니다. 1. CreateMemberRequest, CreateMemberResponse, GetMemberRequest, GetMemberResponse를 각각의 클래스 파일로 분리해서 만드는 방법 2. MemberDto라는 클래스를 만들고 내부에 inner class로 CreateMemberRequest, CreateMemberResponse, GetMemberRequest, GetMemberResponse를 만드는 방법 이렇게 2가지를 생각하고 있는데요. 처음에는 1번으로 진행하려고 했지만 DTO하나를 클래스 파일 하나로 빼려다보니 나중에는 파일이 너무나도 많아질 것 같아 걱정이 됩니다. 그래서 2번처럼 inner class로 만들면 파일의 개수를 줄일 수 있을 것 같아서 고민중인데요. https://velog.io/@ausg/Spring-Boot%EC%97%90%EC%84%9C-%EA%B9%94%EB%81%94%ED%95%98%EA%B2%8C-DTO-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0 인터넷을 찾아보니 위 글 처럼 inner class로 활용하는 방법을 소개하는 글이 있더라구요. 궁금한점은, 실무에서는 DTO마다 별도의 클래스 파일로 분리하여 관리하는 방법과 inner class로 분리하는 방법 중 어떤 방법을 더 많이 사용하나요? 감사합니다 :)