묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Real MySQL 시즌 1 - Part 2
질문드립니다.
안녕하세요. 1,2 강의 전부 잘봤습니다!! 많은 도움 되었습니다.근데 강의에 대한 질문은 아닌데 도저히 여쭤볼 사람이 딱히 없어서요..현재 백엔드 취준생인데 프로젝트에 mysql 레플리카를 도입해서 master / slave1,2 아키텍처를 구성 하였습니다.--master[mysqld]log_bin = mysql-binserver_id = 10binlog_do_db = reservationdefault_authentication_plugin = mysql_native_password-- slave[mysqld]log_bin = mysql-binserver_id = 11relay_log = /var/lib/mysql/mysql-relay-binlog_slave_updates = ONread_only = ONdefault_authentication_plugin = mysql_native_password master와 slave에 맞게 설정을 해주고 master의 LOG_FILE, LOG_POS를 토대로 각각의 슬레이브에 설정하여Slave_IO_Running, Slave_SQL_Running slave1,2 각각 YES 인걸 확인하고 데이터 복제 및 인덱스 복제 까지 잘 동작하는것 까지 확인하였습니다. 그래서 백엔드 로직에서 ReadOnly 쿼리 비지니스로직은 SLAVE1,2의 dataSource가 할당 되어서 동작 하도록 구성하였고 실제로 테스트 해봤는데 master가 아닌 SLAVE1,2에서만 읽는것을 확인 하였습니다. 근데 여기서 문제인게 읽기작업에 대해서만 부하를 줘서 성능테스트를 진행하였는데 실제로 레플리카를 도입하기 이전 1대의 mysql 서버만 존재했을때가 성능이 20~30% 가 더좋게 나옵니다.저는 실제로 이미 쓰기작업을 끝낸 데이터에 대해 읽기 작업을 slave1,2가 트래픽을 분산(라운드 로빈 방식으로 정확히 50프로 확률로 분산) 하여 처리하니까 성능이 올라갈것으로 기대했는데 왜그런지 도저히 모르겠습니다.추가로 쓰기작업(JPA 긍정적 락), 읽기작업을 동시에 요청하는 부하테스트도 진행 했는데 물론 이 경우도 쓰기는 master만 진행하고 읽기작업은 나머지 slave1,2에서만 진행하는걸 확인했지만 성능 결과 1대의 mysql서버가 읽기,쓰기를 다 처리하는것이 성능이 더 좋았습니다. 그래서 제가 내린 결론은 만약 제가 한 테스트 방법이 잘못되지 않았다고 가정할 경우SLAVE 아키텍처를 가져 갈 경우 성능 향상보다는 부하를 분산시켜 최대 허용 TPS 향상 및 아키텍쳐의 안정성을더 해주는게 의미가 있다고 생각되고,만약에 SLAVE1,2를 두었는데 무조건 읽기작업의 성능향상이 이뤄져야 한다고 말씀 하시면 어떤 부분에서제가 무엇을 잘못 설정한걸 수 도있는지 아니면 어떤 이유가 존재할 수도 있는지 해결가능성이 있는 키워드정도 알려주시면 정말 감사하겠습니다. 추가로 상황에 따라 다르겠지만, 마스터 슬레이브 간의 동기화 문제를 해결하는 가장 보편적이고 추천 해주실만한 방법(제가 생각한 방법은 쓰기작업 직후의 읽기작업은 슬레이브가 아닌 마스터에서 하는 방식)이 있는지 알려주시면 정말 감사하겠습니다! 긴글 읽어주셔서 감사합니다.
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
2번 select문 질문있습니다
첫번째 col2 + col3은 내부덧셈에 null값이 있어도 결과값이 정수로 나왔는데 왜 컬럼끼리의 덧셈은 null값이있으면 전부 null로 나오는지 궁금합니다.
-
해결됨웹 프론트엔드를 위한 자바스크립트 첫걸음
왜 전부다 div태그로 만드는지 궁금합니다.
강사님 강의를 들으면서 의문이 들었는데 강사님 버튼 부분으로 되어있는 것들을 div태그로 전부다 만드시던데 혹시 이유가 따로 있을까요???북마크를 추가하는 부분이나 취소, 추가 부분은 button태그를 사용하거나 북마크를 입력하는 div태그 전체를 form태그로 묶어서 사용하는게 좀 더 좋지 않을까요??강사님이 div 태그만 사용하시던데 혹시 이유가 따로 있으신건가요??
-
해결됨웹 프론트엔드를 위한 자바스크립트 첫걸음
[수업질문] bookmark.js에서
6, 북마크 아이템 추가하기에서 추가 버튼을 누르면 bookmarkList.push is not a function at HTMLDivElement.addBookMarkItem 이라고 콘솔에 나옵니다 ..ㅠㅠ(css와 마크업은 미리 적어두었습니다.)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
KeyError: 'Gender' 에러
위의 코드를 그대로 입력하고 baseline 코드까지 문제가 없다가 label에서 다음과 같은 에러가 발생했습니다. KeyError Traceback (most recent call last) /usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py in get_loc(self, key) 3804 try: -> 3805 return self._engine.get_loc(casted_key) 3806 except KeyError as err:index.pyx in pandas._libs.index.IndexEngine.get_loc() index.pyx in pandas._libs.index.IndexEngine.get_loc() pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: 'Gender' The above exception was the direct cause of the following exception: 아래는 입력한 코드입니다. 어떤 부분이 문제일까요? ㅠㅠ#label from sklearn.preprocessing import LabelEncoder for col in cols : le = LabelEncoder() train[col] = le.fit_transform(train[col]) test[col] = le.transform(test[col]) train[cols].head()
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
직렬화 관련하여 궁금한 점이 있습니다.
22:43 부분에서, 제가 실수로void UStudent::Serialize(FArchive& Ar){Super::Serialize(Ar); Ar << Name;} 처럼 Ar<<Order; 를 적지 않은 상태에서 31:19 부분까지 진행을 하였고, 출력 결과가 놀랍게도 "[ObjectData] 이름 이득우 순번 59" 가 출력이 되었습니다.분명 StudentSrc->Serialize(MemoryWriterAr); 에서 Ar << Order; 가 누락되어서 직렬화를 진행하지 못했고, BufferArray 에는 59 라는 Order가 저장되지 않았을 것일텐데, 따라서 결과적으로 print함수를 통해 순번이 59가 아닌 생성자에서 설정한 -1로 떠야 한다고 생각하지만 이상하게도 59라는 숫자가 출력됩니다.이 말은 Ar<<Order; 를 누락했더라도 내부적으로 알아서 직렬화를 진행했다고 볼수밖에 없는 것일까요...?만약 그렇다면 어떤 코드부분에서 StudentSrc의 Order를 MemoryWriterAr가 소유한 BufferArray 에 저장하게 되는 것인지 궁금합니다. 다음은 저의 코드입니다.(제가 실수하지 않았다면, 사실상 Student.cpp ->void UStudent::Serialize(FArchive& Ar) 함수에서 Ar << Order; 가 누락된 것을 제외하고 전부 동일합니다.) //MyGameInstance.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Engine/GameInstance.h"#include "MyGameInstance.generated.h"struct FStudentData{FStudentData() {}FStudentData(int32 InOrder, const FString& InName) : Order(InOrder), Name(InName) {} friend FArchive& operator<<(FArchive& Ar, FStudentData& InStudentData){Ar << InStudentData.Order;Ar << InStudentData.Name;return Ar;}int32 Order = -1;FString Name = TEXT("홍길동");};/****/UCLASS()class UNREALSERIALIZATION_API UMyGameInstance : public UGameInstance{GENERATED_BODY()public:UMyGameInstance();virtual void Init() override;private:UPROPERTY()TObjectPtr<class UStudent> StudentSrc;};//MyGameInstance.cpp// Fill out your copyright notice in the Description page of Project Settings.#include "MyGameInstance.h"#include "Student.h"void PrintStudentInfo(const UStudent* InStudent, const FString& InTag){UE_LOG(LogTemp, Log, TEXT("[%s] 이름 %s 순번 %d"), InTag, InStudent->GetName(), InStudent->GetOrder());}UMyGameInstance::UMyGameInstance(){}void UMyGameInstance::Init(){Super::Init();FStudentData RawDataSrc(16, TEXT("이득우"));const FString SavedDir = FPaths::Combine(FPlatformMisc::ProjectDir(), TEXT("Saved"));UE_LOG(LogTemp, Log, TEXT("저장할 파일 폴더 : %s"), *SavedDir);{const FString RawDataFileName(TEXT("RawData.bin"));FString RawDataAbsolutePath = FPaths::Combine(*SavedDir, *RawDataFileName);UE_LOG(LogTemp, Log, TEXT("저장할 파일 전체 경로 : %s"), *RawDataAbsolutePath);FPaths::MakeStandardFilename(RawDataAbsolutePath);UE_LOG(LogTemp, Log, TEXT("변경된 파일 전체 경로 : %s"), *RawDataAbsolutePath);FArchive* RawFileWriterAr = IFileManager::Get().CreateFileWriter(*RawDataAbsolutePath);if (nullptr != RawFileWriterAr){*RawFileWriterAr << RawDataSrc;/*RawDataSrc << RawFileWriterAr;/RawFileWriterAr->Close();delete RawFileWriterAr;RawFileWriterAr = nullptr; }FStudentData RawDataDest;FArchive* RawFileReaderAr = IFileManager::Get().CreateFileReader(*RawDataAbsolutePath);if (nullptr != RawFileReaderAr){*RawFileReaderAr << RawDataDest;RawFileReaderAr->Close();delete RawFileReaderAr;RawFileReaderAr = nullptr;UE_LOG(LogTemp, Log, TEXT("[RawData] 이름 %s 순번 %d"), *RawDataDest.Name, RawDataDest.Order);}}StudentSrc = NewObject<UStudent>();StudentSrc->SetName(TEXT("이득우"));StudentSrc->SetOrder(59);{const FString ObjectDataFileName(TEXT("ObjectData.bin"));FString ObjectDataAbsolutePath = FPaths::Combine(*SavedDir, *ObjectDataFileName);FPaths::MakeStandardFilename(ObjectDataAbsolutePath);TArray<uint8> BufferArray;FMemoryWriter MemoryWriterAr(BufferArray);StudentSrc->Serialize(MemoryWriterAr);if (TUniquePtr<FArchive> FileWriterAr = TUniquePtr<FArchive>(IFileManager::Get().CreateFileWriter(*ObjectDataAbsolutePath))){*FileWriterAr << BufferArray;FileWriterAr->Close();}TArray<uint8> BufferArrayFromFile;if (TUniquePtr<FArchive> FileReaderAr = TUniquePtr<FArchive>(IFileManager::Get().CreateFileReader(*ObjectDataAbsolutePath))){*FileReaderAr << BufferArrayFromFile;FileReaderAr->Close();}FMemoryReader MemoryReaderAr(BufferArrayFromFile);UStudent* StudentDest = NewObject<UStudent>();StudentDest->Serialize(MemoryReaderAr);PrintStudentInfo(StudentDest, TEXT("ObjectData"));}}//Student.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "UObject/NoExportTypes.h"#include "Student.generated.h"/****/UCLASS()class UNREALSERIALIZATION_API UStudent : public UObject{GENERATED_BODY()public:UStudent();int32 GetOrder() const { return Order; }void SetOrder(int32 InOrder) { Order = InOrder; }const FString& GetName() const { return Name; }void SetName(const FString& InName) { Name = InName; }virtual void Serialize(FArchive& Ar) override;private:UPROPERTY()int32 Order;UPROPERTY()FString Name;};//Student.cpp// Fill out your copyright notice in the Description page of Project Settings.#include "Student.h"UStudent::UStudent(){Order = -1;Name = TEXT("홍길동");}void UStudent::Serialize(FArchive& Ar){Super::Serialize(Ar); Ar << Name;}
-
미해결Flutter로 SNS 앱 만들기
Storage사용..?
강의에 따라서 Firebase의 storage를 시작하기 하려고 하는데 시작하기 버튼이 없어지고Storage 기능을 사용하려면 프로젝트의 결제 요금제를 업그레이드하세요로 바뀐거 같은데 …? 어떡하죠 클라우드 파이어스토어랑 , authentication은 설정 완료했습니다
-
미해결쉬운 모바일 테스트 자동화 시작하기 : Appium Studio
appium studio download 문의드립니다.
안녕하세요 강의에 appium studio download 방법이 자세히 나와있지 않아 문의드립니다.영상내에서 홈페이지에서 간단하게 신상정보 입력 후 이메일을 통해 다운로드 링크를 받으라고 안내해주셨는데 아래 링크가 맞는지 문의드립니다. https://digital.ai/products/continuous-testing/appium-studio/free-trial/ 위 링크에 정보 입력 후 등록한지 30분가량이 되었지만 메일로 링크는 못받고있는데 보통 얼마나 소요가 될까요?
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
컴포넌트에 매개변수 전달하는 방식에 대하여
프로젝트 작성할 때 ,APP.js와 components폴더 안의 js모듈로 보통 구성을 하시는데,왜 APP.js에서 $app을 매개변수로 받을 때는 소괄호에서 바로 받는데,다른 컨포넌트 내부 js모듈에서는 중괄호로 받는건가요? export default function App($app) {} export default function CityList({ $app, initialState,handleLoadMore }) {} APP의 경우 전달받는게 하나인데, CityList의 경우 APP에서 여러개의 매개변수를 받아오기 떄문에 구조분해로 받아오는 건가요? 만약 그렇다면 한개만 매개변수로 받아오는 경우, CityList도 (소괄호)안에 {중괄호}없이 바로 매개변수를 써도 되는 건가요?
-
미해결
강의노트 PDF 파일로 다운 받을 수 있을까요?
안녕하세요 .강의노트가 피그마 파일로 되어 있어 보기가 불편한데 혹시 PDF 파일로도 다운 받을 수 있게 해주실 수 있나요? 감사합니다.
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
시나리오4번-문제3 관련질문입니다!
실습문제를 더 풀어보고싶던 차에좋은 문제 제공해주셔서 감사드립니다!! 덕분에 아직 부족했던 항목들에대해서연습도 되고, 아직 숙달하지못한곳들 확인할수있었습니다 다름이아니라 제가 3번문제와 관련해서 샘플 찾을때, log tracker를 활용하지않고 풀이했는데 해당방법이 유효한 방법인지 궁금해서 문의드립니다ㅠ *첨부파일 save 되길래, 추출된 파일을 어떻게든 열어보려고 시도하다가 성공했는데 해당방법으로 풀이해도 되는지 궁금합니다!...*풀이과정: 이메일 파일중에 첨부파일을 저장후 열어보려고했으나 오류발생>> HxD이용 시그니쳐 등 분석>>Base64 인가싶던차에 Autopsy의 ,Data Artifacts항목의 이메일 Header 관련 분석화면에서 "content-transfer-encoding: base64" 확인 >> cmd 에 제공되는 certutil 명령어 옵션 -decode 이용해서 복호화시도>> 정상적으로 파일열리는것 확인 *풀이요약: 이메일 첨부파일을 certutil -decode (cmd명령어) 이용해서 파일을 복호화하여 내용확인했는데 유효한방법인지 궁금합니다...실습할때마다 뭔가 놓치는 것들이 한두개보이는것같은데 잘 정리해서 남은기간열심히 준비해보겠습니다 좋은강의 제공해주시고, 질문드릴때는친절하고 상세하게 답변해주셔서항상 감사드립니다!!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
캐글 타이타닉 문제
캐글 타이타닉 문제에서검증 데이터 분리 작업을 안해도 되는건가요?수업 영상 작업형2 모의고사는 전부 검증 데이터 분리 작업을해주셨던데,안해도 무방한건지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
Int32Array += {2, 4, 6, 8, 10}; 문법이 궁금합니다.
이걸 풀어서쓰면 int32Array = int32Array + {2,4,6,8,10}; 이거인데문법오류가 나더라구요 +=는 어떻게 가능한건가요? TArray는 배열끼리의 +연산자가 오버로딩되어있나요?
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
데이터 타입 (Data Type) 질문
True, False 같은 BOLEAN type을 안쓰고 TINYINT type을 사용하는 이유가 궁금합니다
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[1-9. 퍼널 SQL 쿼리 작성하기] 집계데이터 pivot쿼리
안녕하세요 카일스쿨님:)강의 마지막에 선택과제(?)로 주신 집계데이터 pivot쿼리 작성해봤습니다.쿼리를 작성하면서, 지금은 피봇할 컬럼이 많지 않아서 하나하나 피봇해주는 것으로 진행했는데 이게 최선일지가 의문이 들어서요,피봇하는 컬럼 조건이 다를 뿐 과정은 동일해서 공통으로 적용할 수 있는 방법이 있을 것 같은데 제가 잘못 이해하고 있는 것인지, 아니면 피봇을 항상 이런식으로 진행해야 하는 것인지도 같이 질문드립니다.감사합니다:) with base as ( select event_date ,event_timestamp ,event_name ,user_id ,user_pseudo_id ,max(if(param.key = 'firebase_screen',param.value.string_value,null)) as `firebase_screen` ,max(if(param.key = 'food_id',param.value.int_value,null)) as `food_id` ,max(if(param.key = 'session_id',param.value.string_value,null)) as `session_id` from advanced.app_logs , unnest(event_params) as param where 1=1 and event_name in ('screen_view','click_payment') and event_date >= '2022-08-01' and event_date <= '2022-08-18' group by all order by 1 ) , before_pivot as ( select event_date ,concat(event_name,'-',firebase_screen) as `event_name_with_screen` ,case when event_name = 'screen_view' and firebase_screen = 'welcome' then 1 when event_name = 'screen_view' and firebase_screen = 'home' then 2 when event_name = 'screen_view' and firebase_screen = 'food_category' then 3 when event_name = 'screen_view' and firebase_screen = 'restaurant' then 4 when event_name = 'screen_view' and firebase_screen = 'cart' then 5 when event_name = 'click_payment' and firebase_screen = 'cart' then 6 end as `step_number` ,count(*) as cnt from base where 1=1 group by 1,2,3 having step_number is not null ) select event_date ,max(if (event_name_with_screen = 'screen_view-welcome',cnt,null)) as `screen_view-welcome` ,max(if (event_name_with_screen = 'screen_view-home',cnt,null)) as `screen_view-home` ,max(if (event_name_with_screen = 'screen_view-food_category',cnt,null)) as `screen_view-food_category` ,max(if (event_name_with_screen = 'screen_view-restaurant',cnt,null)) as `screen_view-restaurant` ,max(if (event_name_with_screen = 'screen_view-cart',cnt,null)) as `screen_view-cart` ,max(if (event_name_with_screen = 'click_payment-cart',cnt,null)) as `click_payment-cart` from before_pivot group by all order by 1
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
dir/__all__ 활용관련
안녕하세요. dir 이나 __all관련해서,,,print(sklearn.__all__) 은 알겠는데요. 그 다음,,, from sklearn.ensemble import RandomForestClassifier 여기서,, randaomforestclassifier 이게 생각이 나지 않을때 이걸 찾을 수 있는 방법은 없는지요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2503 문제 제한 조건 질문!
두 번째, 세 번째 자리수의 0이면 안된다는 제한 사항은 없지 않나요? 이렇게 탐색하면 틀렸다고 나와서 질문드립니다!for a in range(1, 10): for b in range(10): for c in range(10):
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
상황별 가설검정 문의
안녕하세요,작업형3을 공부하던 중 궁금한 점이 생겨 문의드립니다. 어떤 상황에서 T검정, 카이제곱 검정, 회귀분석, 분산분석(ANOVA)를 수행하는건지명확히 분류가 잘 안 되는데 위와 같이 T검정, 카이제곱 검정, 회귀분석, 분산분석 중어떤 것을 수행할지는 문제에서 주어지는 사항일까요? 감사합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
coolsms statuscode 2000 인데 전송안돼는 경우 확인.
coolsms statuscode 2000 인데 폰에 메시지가 안오면 번호도용문자차단 서비스 사용중인지 확인해보세요.이게 인터넷 문자메시지를 막는 모양입니다.해지신청하고 3~7일 정도 시간이 걸려 적용된답니다.저도 신청하고 대기중...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
모르는 것이 많은데, 이대로 진행해도 괜찮을까요?
안녕하세요. 저는 전공자고, 자바는 학교에서 배운 상태입니다.백엔드 공부하려고 김영한 선생님 로드맵 따라가고 있고, 현재 스프링 입문 강의까지 맞춘 상태입니다.스프링에 처음 접하는데 스프링 입문 강의를 듣고 기능적인 부분은 대충 이해를 하였는데, 문법적인 것들은 처음 접해서 어려움을 느끼고 있습니다. 혹시 스프링에 대해 따로 공부하고 로드맵을 진행해야 할까요? 아니면 따로 스프링 공부 없이 로드맵을 따라가도 괜찮을까요..?