묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
콘솔창에서 한글이 깨지는 이유
#include <stdio.h> #include <windows.h> int main(int argc, char* argv[]) { int ch; FILE* fr, * fw; //const UINT default_cp = GetConsoleOutputCP(); //printf("%u\n", default_cp); const char* in_filename = "원본.txt"; const char* out_filename = "사본.txt"; unsigned long count = 0; if ((fr = fopen(in_filename, "r")) == NULL) { printf("can't open %s\n", in_filename); exit(EXIT_FAILURE); } if ((fw = fopen(out_filename, "w")) == NULL) { printf("can't open %s\n", out_filename); exit(EXIT_FAILURE); } //SetConsoleOutputCP(CP_UTF8); while ((ch = fgetc(fr)) != EOF) { fputc(ch, stdout); fputc(ch, fw); count++; } fclose(fr); fclose(fw); //SetConsoleOutputCP(default_cp); printf("file %s has %lu characters\n", in_filename, count); printf("copied to %s\n", out_filename); printf("한글 출력 확인"); return 0; } 제가 제대로 이해한건지 헷갈리네요...강의 2:45 콘솔창에서 한글이 깨지는 이유는 텍스트 파일의 인코딩 방식은 UTF8(== 인코딩방식 == 코드페이지)인데 콘솔창의 인코딩 방식과 다르기 때문이 맞나요?원본.txt에 담겨있는 데이터는 컴퓨터 내부에서 바이너리로 저장되어있습니다. (프로그램을 통해 인코딩을 해도 이 바이너리 데이터 자체는 바뀌지않음)이 바이너리 데이터를 메모장은 UTF8 인코딩 방식을 통해서 인코딩 한 후 출력하기 때문에 메모장에서는 한글이 제대로 출력 되는 것이고,프로그램은 이 바이너리 데이터를 그대로 읽어왔지만 콘솔창의 인코딩 방식은 UTF8이 아니기 때문에 인코딩 과정에서 한글은 제대로 인코딩이 안되고 그렇기에 한글은 깨지는것. 그러므로 SetConsoleOutputCP(CP_UTF8);를 통해 콘솔창의 인코딩방식을 UTF8로 바꾸어 준 후 실행하면 한글이 제대로 출력 됨.마지막으로 복사한 사본.txt파일의 데이터는 원본.txt에 담겨있는 바이너리 데이터 그 자체를 그대로 복사한 것이고 그것을 메모장에서 열면 인코딩방식이 일치하기에 사본.txt파일은 한글이 깨지지 않는다.맞을까요? 감사합니다!!!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
강의를 다 듣고 어떻게 공부해야 할지 궁금합니다.
Q1. nest.js 같은 라이브러리들을 자유자재로 써야 하나요?Q2. docs를 따로 보면서 사이드 프로젝트를 만들며 공부해야 하나요? 아니면 또 다른 강의를 구매해서 공부해야하나요? 기초적인 지식은 어느정도 감이 잡힌 것 같은데, 세부적인 설정 부분이나 고급 기능들은 어떻게 접근할지 잘 모르겠습니다. 강사님은 어떻게 공부하시나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
html에 iframe으로 연결했는데 안떠요..
안녕하세요.. 매번 사소한걸로 질문드리고 있어욥...싸이월드 만들기 2탄 수업들으면서 같이 실습하고 있는데 html에는 제대로 입력을 한것같은데 화면에는 제대로 안떠서 문의글 남깁니다... 머가 문제인지 모르겠어요ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
수업 자료 코드 오타
강의에서는 List<Order> orders = orderRepository.findAllByString(new OrderSearch()); 로 수업해주시는데 강의자료에는 List<Order> orders = orderRepository.findAll(); 로 나와있습니다.
-
해결됨면접 전에 알고 가면 좋을 것들 - 신입 Java 백엔드 개발자편
Metaspace에 대해서
안녕하세요! JVM 메모리구조를 최근에 공부하면서 생긴 궁금증이 있어 질문을 드리고자 합니다. Metaspace 영역에서는 Class와 Method, Static 변수들에 대한 메타데이터를 가지고 있다고 알고 있는데, 이는 Method 영역의 역할과 겹치는 것 같습니다. Method 영역 내에 Metaspace 영역이 존재하는 걸까요?Spring 프레임워크를 사용하다보면, 수 많은 요청에 대해 Reflection을 사용하게 되고 이는 Metaspace에 부하를 줄 수 있다고 하셨습니다. 하지만 특정 A 클래스를 동적으로 로딩하면 최초 한 번에 한해서만 Metaspace에 메타데이터를 저장할 것이고, 이후에는 추가적으로 해당 클래스에 대한 메타데이터를 중복해 저장하지 않는데 어느 포인트에서 성능이 저하되는지 궁금합니다. 위와 같은 개념들을 아무리 찾아봐도 나오지 않아서 선생님께 여쭤보고 싶었습니다. 올려주신 강의와 유튜브 영상 항상 잘 보고 있습니다. 감사합니다 :)
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
강의 노트(PPT) 파일은 제공이 안되는 건가요?
안녕하세요.강의에서 사용되는 강의 노트(PPT) 파일은 제공이 안되는 건가요?다운로드 받는 곳을 찾지 못해 문의 드립니다.감사합니다.수고하세요.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 연동 부분에 auth가 import가 안됩니다.(깃허브 첨부)
파이어베이스 설정 전까지는 잘 따라왔는데 Firebase SDK부분에서 코드가 다르고 또 개발 문서에서 예시코드가 이제는 제공되지 않더라구요 깃허브는 https://github.com/wonttan/Mobile_Programming 입니다
-
해결됨Windows 시스템 프로그래밍 - 기본
세마포어 예제 소스 코드 문의
안녕하세요 강사님세마포어 개념을 이해하려고 노력중입니다 ㅎㅎ강의 보며 소스코드를 따라치면서 이해해보도록 노력하고 있습니다.아래와 같이 실행하니, 보안에러가 발생하고 있습니다.혹시 제가 소스코드를 잘못작성한건지, 실행환경설정을 바꿔주면 실행되는지 문의 드립니다.#define CRTSECURE_NO_WARNINGS #include <iostream> #include <string.h> #include <Windows.h> #include <process.h> #include <conio.h> // Semaphore를 이용한 동기화 HANDLE g_hSema; TCHAR g_StringList[10][64] = { 0 }; UINT WINAPI ThreadSemaphore(LPVOID param) { int nIndex = (int)param; while (TRUE) { ::wsprintf(g_StringList[nIndex], TEXT("%d thred is Waiting"), nIndex); ::Sleep(500); DWORD dwResult = ::WaitForSingleObject(g_hSema, INFINITE); // g_hSema이 끝나기를 ::wsprintf(g_StringList[nIndex], TEXT("%d thred is Selected##"), nIndex); ::Sleep(500); ::ReleaseSemaphore(g_hSema, 1, NULL); } return 0; } int main(void) { g_hSema = ::CreateSemaphore(NULL, 3, 3, NULL); UINT nThreadId = 0; HANDLE hThread = NULL; // 핸들 생성 for (int i = 0; i < 10; i++) { hThread = (HANDLE)::_beginthreadex( NULL, 0, ThreadSemaphore, (LPVOID)i, 0, &nThreadId); } while (1) { system("cls"); for (int i = 0; i < 10; i++) { putws(gStringList[i]); } ::Sleep(1000); } return 0; } <에러 문구>
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
pakage 내에서 main함수는 하나만 존재해야하나요?
네
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
tcp 접속에서 오류. File corrupted while reading record
안녕하세요.먼저 h2를킨다음, application.yml 파일에서주소 url: jdbc:h2:~/jpashop 를 통해 실행하면, User 폴더에 jpashop.mv 파일이 생성은 됩니다. 그런데 tcp 를 통해 접속하기위해주소 url: jdbc:h2:tcp://localhost/~/jpashop 를 입력한다음 intelliJ를 다시 실행하니 File corrupted while reading record: null. Possible solution: use the recovery tool [90030-214]실행창에 이런 경고가 뜨면서 연결되지않고 꺼집니다. h2에 문제가있나싶어서 h2를 전부 제거하고 1.4.200 버전으로 새로 깔았는데도 문제가 해결되지 않습니다.이전동안 문제없이 잘되었는데 알수없는이유로 안되네요 어디가 문제일까요...
-
미해결처음 만난 리덕스(Redux)
저질문이있습니다 .
react랑 redux 연결해서 화면 처음 띄우고 있는데 이처럼 강의랑 똑같이 코딩했는데,화면이 나오질않고있습니다. ㅠ 뭐가 문제일까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
비주얼 스튜디오 질문
강의를 보고 따라하면서 공부할 때도 있는데 가끔 비주얼 스튜디오가 똑같이 적었는데도 오류라고 말하면서 빌드가 안되다가 따로 수정 없이 프로그램을 끄고 다시 키면 빌드가 되는 경우가 있는데 이런 경우는 원인이 무엇인가요??
-
해결됨실전! Querydsl
@QueryProjection 사용시 집합함수는 불가능한가요?
.select(new QDto(point.p.sum())) .from(point) 이런식으로 할려는데 dto에 integer로 했는데 안되네요집합함수같은거는 dto로 바로 반환 불가능한가요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 방식으로 풀었는데 이 풀이도 성능이 괜찮을까요?
function solution(n, m) { const answer = []; const DFS = (num, combination) => { if (combination.length === m) { answer.push(combination.slice()); return; } if (num > n) return; DFS(num + 1, [...combination, num]); DFS(num + 1, [...combination]); }; DFS(1, []); return answer; } console.log(solution(4, 2));이전에 배웠던 방식처럼 해당 수를 포함하는 경우와 포함하지 않는 경우로 DFS를 호출하고 combination 배열이 길이가 m이면 answer에 push하도록 했습니다.이 방식으로 풀어도 정답 코드와 성능이 크게 다르지 않을까요?
-
해결됨디자인 시스템 with 피그마
개발자 입장에서 필요한 최대 단위 토큰은 어느정도일까요?
범쌤님 질문 답변 정말 감사합니다. 궁금했던 속이 뻥 뚫리네요.ㅜㅜ추가질문1. 프론트 개발자 입장에서 필요한 최대 단위 토큰은 어느정도일까요?전역에서 베이스단위 토큰으로 관리되는것만으로도(큰단위 필요 없이) 개발에 매우 용이한것이라는거죠? 개발자가 아니여서 어느정도 매력적인지가 감이 안와서 여쭤봅니다. (현재 '토큰'으로 개발되어있지 않음)사실 디자인 관리측면에서는 아무리 못해도 원자단위 까진(버튼,인풋) 만들어서 개발연동해두고 싶어서요.생각의 차이인듯해서 어느정도가 서로가 생각하는 필요선의 합의점일지가 궁금합니다.추가질문2. 버튼 토큰은 무료버전에서 만들수없을까요?테스트 단계라 아원자보다 더 큰 단위의 토큰까지 테스트 해보고싶습니다.그리고 유료버전 강의는 생각하고 있지 않으신걸까요?
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
중첩반복문 해결
const solution = (arr) => { let cnt = 1; let rankList = {}; let sort = [...arr].sort((a, b) => b - a); sort.forEach( (point, idx) => point !== sort[idx - 1] && (rankList[point] = cnt + idx)); return arr.map((point) => rankList[point]); };중첩을 결하고자 위와 같이 풀어봤습니다. 평가를 부탁드립니다.
-
미해결인프콘 2023 다시보기
백명석님 강의 중 28p 의 TDD R->G->B 가 뭐의 약자인가요?
28page 의 TDD R->G->B 라고 쓰셨는데, R, G, B 가 뭐의 약자인가요? 구글에 검색하면,TDD Red -> Green -> Refactor Red : 1. write a test that falls Green : 2. Make the code work Reactor : 3.Eliminate redundancy 이많이 검색되네요 예 : https://velog.io/@ryan-son/%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C-Test-Driven-Development-TDD
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓 SendAsync 예외 발생시 대처방법에 대한 질문입니다
안녕하세요 선생님! 강의 잘 듣고 있습니다유니티 연동하면서 간혹 클라에서 서버로 보내는 과정에서 세션 클래스의 SendAsync 부분이 예외를 발생시켜 pendinglist 를 비워주는 clear 함수를 호출 하지 못해if (_pendingList.Count == 0) RegisterSend();영원히 send가 막히는 경우를 발견했습니다 try { bool pending = _socket.SendAsync(_sendArgs); if (pending == false) OnSendCompleted(null, _sendArgs); } catch (Exception e) { RegisterSend(); // 수정한 부분 Console.WriteLine($"RegisterSend Failed {e}"); } 이렇게 RegisterSend(); 를 다시 호출해서 SendAsync 가 될때까지 시도를 하는 방식으로 고쳤더니 send가 막히는 현상을 없애기는 했습니다만제가 생각하는 이 대처방법의 문제는 sendAsync가 계속 예외를 발생시키면 무한루프를 만들어서 이게 맞는 대처방법인지 의문이 듭니다...
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
a* 비용계산
A*알고리즘이 G는 시작점에서 해당 좌표까지 이동하는데 드는 비용이고 H는 목적지로부터 얼마나 가까운지를 따지는 비용이라고 알고 있었는데맵매니저를 만들 때 G를 왜 0으로 두는지 잘 이해가 안되고 H는 원래 (목적지까지 남은 X 방향의 타일 + Y 방향의 타일)로 계산했었는데 (목적지까지 남은 X 방향의 타일^2 + Y 방향의 타일^2)으로 바뀐건지 잘 이해가 안됩니다ㅠㅠ
-
미해결실전! 스프링 데이터 JPA
@Autowired와 @Transactional으로 EntityManager주입 받기
@Autowired로 EntityManager를 주입받을때 여러 쓰레드가 동시에 접근하면 동시성 문제가 발생합니다.하지만 @Transactional을 추가해준다면//1 @Repository @RequiredArgsConstructor @Transactional public class AutowiredRepository { private final EntityManager em; } //2 @Repository public class PersistenceContextRepository { @PersistenceContext private EntityManager em; }@PersistenceContext 처럼 Transaction에 의해 쓰레드간 동시성 문제를 해결해준다고 생각하는데 맞게 생각한건지 궁금합니다.두가지 방법 다 EntityManager를 호출 할때마다 Proxy를 통해 EntityManager를 생성하여 Thread-Safe를 보장해준다라고 볼수 있는 건가요?? 답변주시면 정말 감사하겠습니다.