묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dfs 질문
안녕하세요 선생님. 보통 dfs, bfs 문제를 풀때입력 받은 값들을 인접행렬로 저장해서 풀지 인접리스트로 저장해서 풀지 할때마다 고민이 되는데보통 코테에서는 어느 것이 더 효율적인가요?값들이 밀집되어 있을때는 인접행렬, 값들이 서로 다 떨어져듬성 듬성 있을땐(?) 인접리스트가 더 낫다고 배웠긴 한데 문제에서 이를 판단할땐 쉽지가 않습니다..
-
미해결ElasticSearch Essential
Compressed OOP 조건에 따른 ES Heap Size 제약
안녕하세요, 대용량 데이터 검색엔진 구축을 위해 Elasticsearch를 도입했습니다. 1. 개발환경 및 Spec 설명On-premise Kubernetes 환경에 Helm 배포를 통해 Master, Coordinating, Data Node 각각 4, 4, 10대로 Elasticsearch 클러스터를 구성했습니다.(HA 구성을 위해 Data Node는 모두 다른 Kubernetes Node에 배포되며, statefulSet을 통한 Rolling Update 방식입니다.)예상되는 클러스터 전체 Data Usage는 50TB 수준이고, primary shard와 replica shard의 개수는 각각 10과 1로 둘 예정입니다. 하나의 shard 용량은 10~20GB 수준으로 유지할 예정입니다. 현재는 초기 적재를 위해 replica shard 개수를 0으로 설정한 상황입니다.)pod container의 limit resource는 8core, 64Gi이며, ES_JAVA_OPTS 값으로는 -Xms30g -Xmx30g 옵션을 통해 Elasticsearch의 Heap Memory로는 30GB를 할당했습니다. 32Bit 포인터 관리 방식에서 object 그 자체가 아닌 object의 offset을 참조하는 Compressed OOP 사용을 위해, Elasticsearch의 Heap Size는 32GB를 권장하고 있습니다. 여기에 시작 주소를 0으로 두는 Zero-based 까지 고려하여 보수적으로 30GB를 사용했습니다.위와는 독립적인 권장 사항인 'JVM의 50%을 ES에 할당하라' 조건까지 고려하여 JVM Heapsize를 64Gi 로 두었습니다. 2. issue데이터 색인(bulk가 아닌 일반적인 PUT API) 중, kibana를 비롯하여 Elasticsearch 클러스터 전체에 503 에러가 발생했고 쿠버네티스 클러스터에 배포된 pod(Master, Coordinating Node 전부, 그리고 Data Node는 2대를 제외한 나머지 8개)가 restart 없이 죽었습니다. (원인은 CircuitBreaker입니다.)NAME READY STATUS RESTARTS AGE edms-p01-srep01-coordinating-0 0/1 Running 0 37h edms-p01-srep01-coordinating-1 0/1 Running 0 37h edms-p01-srep01-coordinating-2 0/1 Running 0 37h edms-p01-srep01-coordinating-3 0/1 Running 0 37h edms-p01-srep01-data-0 0/1 Running 0 37h edms-p01-srep01-data-1 0/1 Running 0 37h edms-p01-srep01-data-2 1/1 Running 0 37h edms-p01-srep01-data-3 0/1 Running 0 37h edms-p01-srep01-data-4 0/1 Running 0 37h edms-p01-srep01-data-5 0/1 Running 0 37h edms-p01-srep01-data-6 1/1 Running 0 37h edms-p01-srep01-data-7 0/1 Running 0 37h edms-p01-srep01-data-8 0/1 Running 0 26h edms-p01-srep01-data-9 0/1 Running 0 37h edms-p01-srep01-es-exporter-8457b87fb7-wsshd 1/1 Running 0 39h edms-p01-srep01-kb-84dcb6d7f7-gdhd9 0/1 Running 0 39h edms-p01-srep01-master-0 0/1 Running 0 37h edms-p01-srep01-master-1 0/1 Running 0 37h edms-p01-srep01-master-2 0/1 Running 0 37h edms-p01-srep01-master-3 0/1 Running 0 37h Data Node의 경우 빈번한 Young GC, 그리고 Old GC가 발생했지만 점차 확보하는 Memory 양이 적어지다가 CircuitBreakingException이 발생했습니다.Master와 Coordinating Node는 Old GC 없이 Young GC만으로 heap size가 잘 관리되다가 모든 Data Node 메모리 부하가 심해지니 Pod가 죽었는데, 유추하기로는 처리되지 못한 색인 데이터의 transport가 loop 되다가 Master/Coordinating 메모리에도 영향을 준 것으로 보입니다. CircuitBreakingException이 발생 전의 한 Data Node의 stats은 아래와 같습니다. (GET _nodes/stats) "mem" : { "heap_used_in_bytes" : 28558120848, "heap_used_percent" : 88, "heap_committed_in_bytes" : 32212254720, "heap_max_in_bytes" : 32212254720, "non_heap_used_in_bytes" : 191720344, "non_heap_committed_in_bytes" : 201515008, "pools" : { "young" : { "used_in_bytes" : 771751936, "max_in_bytes" : 0, "peak_used_in_bytes" : 19243466752, "peak_max_in_bytes" : 0 }, "old" : { "used_in_bytes" : 27784679400, "max_in_bytes" : 32212254720, "peak_used_in_bytes" : 32129130920, "peak_max_in_bytes" : 32212254720 }, "survivor" : { "used_in_bytes" : 1689512, "max_in_bytes" : 0, "peak_used_in_bytes" : 1520169584, "peak_max_in_bytes" : 0 } } }, ... "gc" : { "collectors" : { "young" : { "collection_count" : 226, "collection_time_in_millis" : 15603 }, "old" : { "collection_count" : 1, "collection_time_in_millis" : 6322 } } } 3. 의문점Data node 역할을 담당하는 pod가 죽은 것은 그럴 수 있다 쳐도 색인과 관련 없는 Coordinating/Master Node 역할의 pod에까지 영향을 미치는 이유는 무엇인가요?(위의 pod metric을 살펴보아도 OOM과는 전혀 거리가 멀어보이긴 합니다만) Elasticsearch가 분산시스템이지만 위와 같이 Kubernetes 노드에 문제가 없는 상태에서 pod만 죽어버리니 고가용성이 무색해지는군요... 앞서 말씀드린 것처럼 색인 데이터의 transport 내부 동작이 영향을 미쳤을까요?위와 같은 CircuitBreakingException에 대응하는 방법에는 ES_JAVA_OPT의 Heap Memory 용량을 증설하거나, 클러스터 세팅 indices.breaker.total.limit 값은 이미 95%입니다. (indices.breaker.total.use_real_memory가 true 이므로) 이때, 이미 Heap이 30GB라면, Compressed OOP의 조건인 32GB를 넘는 수준의 ES_JAVA_OPTS 설정을 시도하려면 어느 정도로 높게 하는게 좋을지 고견을 여쭙습니다.(Container의 jvm memory 자체에는 큰 제약이 없는 개발환경입니다. 즉, 128GB, 256GB처럼 높은 수준의 resources.limit 설정도 가능합니다.)
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
저장되는 파일이 UTF-16 LE로 인코딩됩니다
문제 및 조건Name변수에는 "이득우"문자열을 저장했습니다Json으로 저장된 파일을 열어보면 UTF-16 LE로 인코딩돼있습니다..txt로 파일을 저장하고 메모장으로 열어도 UTF-16 LE로 인코딩 돼있습니다..cpp파일들은 전부 UTF-8로 확실하게 저장했습니다.코드는 Json으로 읽고 쓰기 부분만 첨부드렸지만 바이너리로 저장한 파일도 불러오면 한글만 깨져있습니다.운영체제는 윈도우11, 언리얼 에디터는 5.3.1버전입니다. LogTemp 첨부LogTemp: 저장할 파일 폴더: ../../../../../../UE5_Inflearn/Part1/UnrealSerialization/Saved LogTemp: 저장할 파일전체 경로: ../../../../../../UE5_Inflearn/Part1/UnrealSerialization/Saved/RawData.bin LogTemp: 변경할 파일전체 경로: E:/UE5_Inflearn/Part1/UnrealSerialization/Saved/RawData.bin LogTemp: [RawData] 이름 이득우 순번 16 LogTemp: [ObjectData] 이름 ↓ンᄡ→モン↓レᄚ 순번 59 LogTemp: [JsonData] 이름 ↓ンᄡ→モン↓レᄚ 순번 59작성한 코드의 Json 읽고 쓰기 부분은 이렇습니다.// Json으로 읽고 쓰기 { FString JsonDataFileName(TEXT("StudentJsonData.json")); FString JsonDataAbsolutePath = FPaths::Combine(*SavedDir, *JsonDataFileName); FPaths::MakeStandardFilename(JsonDataAbsolutePath); // "JsonObjectConverter.h" include 필요 //!중요 [프로젝트 명].build.cs파일에 Json관련 모듈 2개를 추가해줘야함 // 공유 레퍼런스 - Null이 아님을 보장함 TSharedRef<FJsonObject> JsonObjectSrc = MakeShared<FJsonObject>(); // 이렇게하면 StudentSrc 오브젝트의 값이 Json으로 변환이 됨 FJsonObjectConverter::UStructToJsonObject(StudentSrc->GetClass(), StudentSrc, JsonObjectSrc); // 파일로 디스크에 저장 FString JsonOutString; TSharedRef<TJsonWriter<TCHAR>> JsonWriterAr = TJsonWriterFactory<TCHAR>::Create(&JsonOutString); if (FJsonSerializer::Serialize(JsonObjectSrc, JsonWriterAr)) { FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath); } FString JsonInString; FFileHelper::LoadFileToString(JsonInString, *JsonDataAbsolutePath); TSharedRef<TJsonReader<TCHAR>> JsonReaderAr = TJsonReaderFactory<TCHAR>::Create(JsonInString); // 파일에 문제가 있으면 Json이 안만들어질 수 있으므로 Null을 허용하는 TsharedPtr사용 TSharedPtr<FJsonObject> JsonObjectDest; if (FJsonSerializer::Deserialize(JsonReaderAr, JsonObjectDest)) { UStudent* JsonStudentDest = NewObject<UStudent>(); if (FJsonObjectConverter::JsonObjectToUStruct(JsonObjectDest.ToSharedRef(), JsonStudentDest->GetClass(), JsonStudentDest)) { PrintStudentInfo(JsonStudentDest, TEXT("JsonData")); } } } 이 문제가 언리얼 에디터 버전때문일까요?아님 제가 코드를 잘못 작성한걸까요?테스트를 좀 해보니 최종 파일의 인코딩은 상관 없었습니다.FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM);이렇게 강제로 UTF8로 인코딩해도 똑같더라고요그래서 Json을 Serialize할 때 파일 저장 직전 Serialize된 문자열 로그를 찍어봤습니다.TSharedRef<TJsonWriter<TCHAR>> JsonWriterAr = TJsonWriterFactory<TCHAR>::Create(&JsonOutString); if (FJsonSerializer::Serialize(JsonObjectSrc, JsonWriterAr)) { UE_LOG(LogTemp, Log, TEXT("JsonOut: %s"), *JsonOutString); // 이 부분 FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM); }저기서부터 이미 한글Name이 깨져있네요 아래처럼 출력됐습니다.[2024.03.12-06.33.03:029][ 12]LogTemp: JsonOut: { "order": 59, "name": "↓ンᄡ→モン↓レᄚ" } 일단 더 찾아보겠습니다
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
다음 nest강의는 prisma는 사용안하실까요?
현업에서 typeorm 만큼이나 prisma를 많이 사용한다고 하는데 이쪽은 자료때문에 공부하기가 좀 힘들어서요
-
미해결Flutter 초입문 왕초보편
현업에서 로컬 DB 활용시 Hive 사용했을때 구현 패턴 문의
main 상단에 Box<ToDO> 로 묶어 전역으로 사용했는데요, 강의 내 말씀하신대로 ... 토이프로젝트가 아닌이상 뭐 좋은방법은 아닐 것 같습니다. 실제로 구현패턴은 어떻게 현업에서 사용하는지 궁금합니다.간단하게 링크를 주셔도 될 것 같습니다. Repository 같은거로 만들어서 넣고빼고 하는걸 메서드 만들어두는 패턴이 있다면 샘플이 궁금합니다.
-
미해결
스프링 시큐리티 OAuth2 설정에 관한 질문입니다.
안녕하세요, 스프링 시큐리티에서 OAuth2 방식으로 로그인 하는도중 질문 드릴것이 있습니다. security: oauth2: client: registration: okta: client-id: "클라이언트 ID" client-secret: "클라이언트 시크릿" redirect-uri: http://localhost:8080/oauth2/okta/sign-in scope: - profile - email - openid provider: okta: issuer-uri: "테스트URI"먼저 yml파일에서 위와같이 설정해 놓았으며, okta내의 리다이렉트 URI도 동일하게 설정해두었습니다.그런데 예전에 진행했던 구글 로그인에서는 인증이 성공하면 code를 가져와서 AccessToken을 자동으로 발급받고, 사용자 정보까지 스프링 시큐리티가 알아서 가져온 이후, CustomOAuthSuccessHandler에서 처리했던것으로 기억합니다.그 당시에는 리다이렉트 URI가 http://localhost:8080/oauth2/code/google와같은 형식이었어서 시큐리티에서 감지하고 자동으로 엑세스토큰까지 가져온걸까요?현재는 Okta 인증이후 http://localhost:8080/oauth2/okta/sign-in 로 code를 파라미터로 가지고 도착하여, 컨트롤러에서 okta인증서버에 수동으로 엑세스토큰을 받아오고 있습니다. 이로인해 CustomOAuthSuccessHandler도 사용하지 못하고 있는 상황이고, SecurityContext를 불러와서 수동으로 로그인처리를 완료하고 있습니다. 물론 기능상에 문제는 없어보이지만.. 어떻게 봐도 코드가 깔끔하지 못하고, 시큐리티를 잘못 사용하고 있는것같아, 여러 문서들을 참고해 보았지만.. 짧은 지식으로는 완벽히 이해하기 힘들어 난항을 겪고있습니다. 꼭 시큐리티에서 default로 설정해둔 uri 형식을 맞춰야 실행되는걸까요?그렇지 않다면 사용하고 싶은 uri로 설정하기 위해서는 어떤 방법이 있을까요?키워드라도 공유해 주신다면 열심히 찾아서 적용해보겠습니다.감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의 내 커리큘럼 엑셀로 받아볼 수 있나요
복습용으로 강의 내 커리큘럼 리스트를 받아보려고 하는데 일일이 수작업으로 하려고 하니 좀 번거로워서 문의드립니다. 혹시 커리큘럼을 export 할 수 있는 기능이 있나요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
ec2 에 배포 자동화시 참고 코드 올려 봐여
ec2 에 배포할 경우 아래처럼 deploy.ytml 수정 하면 pm2 프로세스 종료 후 서버 시작까지 잘되요 여기에 뭔가 좀 빼고 더하는 개선이 필요할것 같은데 일단 기본적인 배포 액션은 잘 동작 합니다. deploy.ymlname: deploy on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout the code uses: actions/checkout@v1 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "18.x" - name: Create SSH directory run: mkdir -p ~/.ssh - name: Install pm2 run: sudo npm install -g pm2 - name: SSH Commands uses: appleboy/ssh-action@v0.1.6 with: host: ${{ secrets.AWS_SSH_HOST }} username: ${{ secrets.AWS_SSH_USERNAME }} key: ${{ secrets.AWS_SSH_KEY }} port: ${{ secrets.AWS_SSH_PORT }} script_stop: true script: | # sudo apt-get update || exit 1 cd express-redis-server/ sudo pm2 delete all || true sudo git pull || exit 1 sudo npm install || exit 1 sudo npm run build || exit 1 sudo pm2 start npm -- start
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
강의 연장 문의
안녕하세요 강사님. 저는 작년에 해당 강의를 수료했습니다.세심하고 자세한 좋은 강의덕분에 많이 배울 수 있었습니다.피그마 업데이트로 강사님께서 새롭게 영상을 업로드 해주신 소식을 확인하였습니다.새로운 업데이트로 인해서 한번 더 강의를 복습하고자 하는데, 강의기간이 얼마 남지 않아 1달정도 연장이 가능한지 문의드립니다.
-
미해결처음 만난 리액트(React)
9강 && 논리연산자 질문입니다.
소플님, 강의 정말 잘 듣고 있습니다. 감사합니다~ 소플님 질문 있습니다. 9-1강에서 && 논리 연산자 설명에서 count = 0 인 경우. return (count && <p>잘 듣고 있습니다~ {count} 번</p>); 상기 결과는 0으로 출력 된다고 설명 들었는데요. 9-1 강의에서isLoggedIn 값이 false로 넘겨졌을 때에 return (isLoggedIn && 환영합니다.<button>로그인</button>);인 경우의 결과는 false<button>로그인</button> 이렇게 false가 찍혀야 할것 같은데 소플님의 영상 화면에서는 버튼 밖에 안보입니다. 왜 그런 걸까요?
-
해결됨구글 애드센스 수익형 워드프레스 블로그 만들기
sticky 추가 css 코드 누락
올려주신 드라이브 파일에서 sticky 관련 파일은 찾을 수가 없는데 누락된건가요? 제가 못찾은거라면 어느부분에 작성되어 있는 지 알 수 있을까요? +추가) 밑줄 없애는 css 코드도 따로 없는것 같은데 확인 부탁드립니다..!
-
해결됨Next + React Query로 SNS 서비스 만들기
_lib 폴더는 어떤 용도인가요?
_lib 폴더는 어떤 용도로 구분되어져 있는 폴더일까요??
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
Handler에 대해 이해가 잘 되지 않아요!
혹시 자세한 설명 해주실 수 있나요? 다른 이벤트를 실행하기 위해 사용하는 것이 handler인가요? 제가 찾아본 것은 다른 백그라운드 ui를 main ui로 실행하기 위해 필요한 것이라는데 이해가 잘 되지않네요 ㅠㅠ
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
pod의 생명주기
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)6. ARM 계열의 m1 , m2 계열은 VirtualBox를 통한 구성이 원할하지 않고, 실습 환경의 다변화는 추후 대처하기 어려워서 현재 과정에서는 지원하지 않습니다. (https://www.inflearn.com/questions/915529)[질문 하기]파드의 생명주기 중 파드가 not in Available Status이면 파드가 어떤 상태인지 알수있을까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
indexOf를 사용해서 반복문 하나 줄여봤습니다
function solution(test) { let answer = 0; let n = test.length; let studentNum = test[0].length + 1; // i는 멘토가 될 수 있는 학생 // j는 멘티가 될 수 있는 학생 for (i = 1; i < studentNum; i++) { for (j = 1; j < studentNum; j++) { if (i === j) continue; let flag = 0; // k는 n차 시험의 결과 for (k = 0; k < n; k++) { if (test[k].indexOf(i) < test[k].indexOf(j)) { flag++; } else { break; } } if (flag === n) answer++; } } return answer; } 각 시험 회차의 인덱스 번호가 학생의 번호다보니까 indexOf를 사용하면 반복문 하나 줄이고도 풀 수 있지 않을까 해서 이렇게 해봤습니다.
-
미해결스프링 부트 개념과 활용
강의 진행되로 똑같이 했는데 jquery가 실행되지 않았는데
<script src="">https://code.jquery.com/jquery-3.3.1.min.js"></script> <script>jQuery(document).ready(function(){alert('ready!');});</script> junit5 인데 변경을 했더니 실행이 되었네요
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
이 강의를 수강하는데 VS Code를 사용해도 무방할까요?
프로그래밍 알못입니다. (SQL을 통한 데이터 핸들링 정도만 해봤습니다) 파이썬 강의를 보다보면 누구는 vs code 누구는 주피터 노트북 이렇게 쓰는 것 같은데 vs code는 이미 설치되어 있습니다. 추가로 주피터 노트북도 써야 하는지요
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다
안녕하세요 강의자료 요청합니다! wjddl9486@naver.com
-
미해결리눅스 IPC 프로그래밍 - 이론과 실습
강의자료 질문
안녕하세요, 강의자료 알집 파일이 비어 있는 것 같습니다. 감사합니다.
-
미해결시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
강의자료
안녕하세요, 강의 자료 pdf 어디서 다운로드 받을수있을까요? 아직 업로드가 안된거라면 언제쯤 업로드가될까요. 감사합니다.