3.13 불리언형 질문
미해결
홍정모의 따라하며 배우는 C언어
b1=0; b1=1; 이걸 왜 해줘야 되나요?
- c
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
홍정모의 따라하며 배우는 C언어
b1=0; b1=1; 이걸 왜 해줘야 되나요?
해결됨
독하게 시작하는 C 프로그래밍
안녕하세요. 강사님. 입출력과 관련된 부분은 운영체제가 처리를 해주는 것으로 알고있습니다. 일반적으로 입출력을 수행할 때 OS가 제공해주는 API를 사용해서 입출력을 수행할텐데 그 행위 자체가 내부적으로 디바이스 파일을 사용하도록 구현이 되는 구조인걸까요 ? 디바이스 파일을 제공해주는 것은 알겠는데 그걸 직접적으로 활용하는 코드는 다뤄본적이 없어서요...
해결됨
독하게 시작하는 C 프로그래밍
설명을 잠시 멈춰두고 혼자서 예제를 만들어봤습니다 근데 gets_s 함수대신 scanf_s 함수를 사용해서도 결과물이 똑같이 나왔는데 어떤걸 사용하든 상관이 없나요? #include <stdio.h> int main(void) { char szName[32] = { 0 }; int nAge = 0; printf("나이를 입력하시오 : "); scanf_s("%d", &nAge); printf("이름을 입력하시오 : "); scanf_s("%s", szName, sizeof(szName)); printf("\n"); printf("당신의 나이는 %d세 입니다\n", nAge); printf("당신의 이름은 %s입니다\n", szName); return 0; }
미해결
홍정모의 따라하며 배우는 C언어
3.11 부동소수점형 9:17에서 8비트 언사인드 정수는 0에서부터 255까지라고 하셨는데 왜 1부터 256이 아니라 0부터 255까지인건가요? 그리고 왜 124에서 127을 빼줘야 되는지 이해가 안가요 2^124-127 이부분이요
해결됨
CUDA 프로그래밍 (4) - C/C++/GPU 병렬 컴퓨팅 - 행렬 matrix 곱하기
안녕하세요. 먼저 좋은 강의 감사드립니다. 아래 소스는 matcpy-dev.cu 에서 가져온 kernel 함수입니다. global void kernelMatCpy( float* C, const float* A, int matsize, size_t pitch_in_elem ) { register unsigned gy = blockIdx.y * blockDim.y + threadIdx.y; // CUDA-provided index if (gy < matsize) { register unsigned gx = blockIdx.x * blockDim.x + threadIdx.x; // CUDA-provided index if (gx < matsize) { register unsigned idx = gy * pitch_in_elem + gx; // in element C[idx] = A[idx]; } } } 그리고 다음 소스는 transpose-dev.cu 에서 가져온 kernel 함수 입니다. global void kernelMatTranspose( float* C, const float* A, unsigned matsize, size_t pitch_in_elem ) { register unsigned gy = blockIdx.y * blockDim.y + threadIdx.y; // CUDA-provided index if (gy < matsize) { register unsigned gx = blockIdx.x * blockDim.x + threadIdx.x; // CUDA-provided index if (gx < matsize) { register unsigned idxA = gy * pitch_in_elem + gx; register unsigned idxC = gx * pitch_in_elem + gy; C[idxC] = A[idxA]; } } } 메모리 접근 관점에서 보면 각 thread별로 A에서 read해서 C에 write하는 동일한 과정으로 보이는데, 결과는 속도 차이가 많이 나는 정확한 원인이 궁금합니다. memory coalescing 때문으로 추정하고 있는데, 맞는 생각일까요? 감사합니다.
미해결
홍정모의 따라하며 배우는 C언어
3.9 고정 너비 정수 3:22 질문입니다 int32_t 에서 언더바 뒤에 t를 써야 되는 이유가 뭔가요? 왜 t인지 궁금해요
미해결
Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
안녕하세요. Backpressure의 Drop 전략에서 버퍼가 비워질 때까지 Emit된 데이터가 Drop이 된다는 것은 이해했습니다. 그런데 1번 데이터가 subscriber에게 전달되어서 처리가 되면 버퍼에 자리가 한 자리 비게 되는데 왜 데이터가 계속 Drop이 되는건가요? (코드 실습에서 onNext()함수가 호출이 되어도 255,256,257 ~ 1024까지 모두 드랍됨) | 1, 2 | <-------- 3 듣랍 | 2, |. <-------- 4 드랍 (여기서 왜 4번 데이터는 안들어가나요?) | 5, 6 | Buffer DROP-LATEST를 보면 | 1, 2 | <---- 3들어오는 중 버퍼 가득 차서 drop | 2, 4 | <------ 1번이 버퍼에서 나가고 한 자리가 비어서 4번이 들어와짐 이런식으로 동작을 하는데 Drop은 이렇게 동작하지 않는 것 같아 버퍼가 어떻게 동작하는지 궁금하여 질문드립니다.
미해결
홍정모의 따라하며 배우는 C언어
3.5 정수와 실수 16:45 질문입니다 실수에서는 왜 Unsigned가 없는건가요? 소수도 부호를 가질 수 있지 않나요?
미해결
홍정모의 따라하며 배우는 C언어
3.5 정수와 실수 12:09 화면 캡처 질문입니다 각 칸에 0과 1이 들어가야 되는 이유랑 왜 0101 1110인지 궁금합니다 어떤건 0이고 어떤건 1인데 어떻게 구분하는건가요?
미해결
홍정모의 따라하며 배우는 C언어
안녕하세요 인프런은 처음인데 따배C강의 무제한이면 언제든지 계속 들을수있는건지 궁금합니다. 혹시 아는내용은 스킵해도 수료증발급가능한지도 궁금합니다. 감사합니다.
해결됨
홍정모의 따라하며 배우는 C언어
안녕하세요. 제가 설명하는 내용이 맞는지 몰라 질문드립니다. 제 설명의 틀린 부분을 지적해주시면 감사하겠습니다. visual studio가 아닌 온라인 c compiler를 이용하면 가변 길이 변수를 사용할 수 있습니다. 가변 길이 변수를 이용하면, int sum2d_4(int row, int col, int ar[row][col]) // row 생략 가능 { int r, c, tot = 0; for (r = 0; r < row; r++) for (c = 0; c < col; c++) tot += ar[r][c]; return tot; } 이와 같은 함수를 사용할 수 있습니다. 즉 int sum2d_2(int ar[][COLS], int row) { int r, c, tot = 0; for (r = 0; r < row; r++) for (c = 0; c < COLS; c++) tot += ar[r][c]; return tot; } 이 함수와 달리, symbolic constant(매크로)를 사용하지 않고 함수의 매개변수 만으로 배열 메모리에 접근하여 함수의 기능을 구현할 수 있는 것입니다. 따라서 VLAs의 기능을 통해, int sum2d_3(int* ar, int row, int col) { int r, c, tot = 0; for(r = 0; r < row; r++) for(c = 0; c < col; c++) tot += *(ar + c + col * r); // ar[c + col * r] return tot; } 포인터를 이용한 위의 함수처럼, 매개변수 만으로 함수의 기능을 구현하고 배열 메모리에 접근할 수 있습니다. 다만, c언어에서 동적할당이 VLAs의 기능을 대체할 수 있고 컴파일러에 따라 VLAs가 불안정하게 작동할 수 있기 때문에 현재 visual studio에서는 사용이 막혀있습니다. 이상의 설명 중 틀린 부분을 지적해주시면 감사하겠습니다. 늘 친절하고 세세한 답변 감사합니다. 좋은 하루 보내세요!
미해결
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
강사 님께서는 객체를 인스턴스화 하실 때, 생성자를 사용하거나, 정적 팩토리 메서드를 사용하는 방식 2가지를 이용하셨는데 혹시 코틀린에서 builder 패턴을 사용하는건 어떻게 생각하시나요?? defalut 파라미터를 이용하고 naming을 통해 builder패턴 처럼 사용할 수 는 있겠지만 java에서 builder패턴을 통해 객체를 만들었던 것에 비하면 불편하다는 생각이듭니다. 조언 해주시면 감사하겠습니다.
해결됨
독하게 시작하는 C 프로그래밍
안녕하세요 유투브에서 알게 되어서 강의구매까지 한 전진호입니다. 메모리 화면에서 64bit를 설명하시고, 16바이트를 계산하셨는데, 저 바이트 코드가 왜 적힌 것이고, 어떤 의미인지 궁금합니다.
미해결
재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요, 강의를 보고 공부를하다 궁금한 점이 생겨 질문드립니다. 제가 예측한 강의 내용으로는, "경쟁 상태 예시(재고 수량)에 대하여 레디스 를 활용한다." 라고 예측 했습니다. 이에 대하여, "레디스는 싱글 스레드 기반이니깐, 락킹 없이 해당 작업이 가능할 것" 이라고 추측하였는데요, 그러나 제가 생각지 못한 레디스 lock 과 관련된 내용을 접하게 되어 신기하면서도 또 궁금한 부분이 생겨 질문드립니다. 레디스 락 전략이 사용되는 이유와 예시를 조금더 들어볼 수 있을까요? 혹은 이와 관련하여 추가적으로 공부해볼 수 있는 자료를추천해주시면 감사하겠습니다.
해결됨
독하게 시작하는 C 프로그래밍
비주얼 스튜디오 클래스 뷰 설정에서 여러 프로젝트 항목들은 어떻게해야 각종 예제들을 묶은 경우와 같이 리스트가 생성 되는지 궁금합니다.
미해결
홍정모의 따라하며 배우는 C언어
scanf가 작동하는 방식이 %d가 들어있다면 정수를 받겠다고 판단을 해서 1.23456이 들어와도 1까지만 받아들이는 것이고 %lf인 경우에는 실수 형태를 받겠다고 판단을 해서 1.23456을 1.23456까지 다 받아들인다는 건가요?
미해결
홍정모의 따라하며 배우는 C언어
int* ptr = arr; printf("%p %p", ptr, arr); 이럴 때 ptr은 arr주소로 가는 것이라 ptr의 주소는 따로 있다고 생각을 했거든요. 그래서 둘의 주소값이 다르다고 생각했는데 왜 같게 나오는 건가요.. 계속 이어서 수강했는데, 어디 강의로 가야 이에 대한 설명을 들을 수 있을까요, 아니면 여기서 설명해주시면 감사하겠습니다.
해결됨
실전! Querydsl
갱신된 강의자료에도 나와 있듯이, fetchResult, fetchCount 등의 메소드는 deprecated 예정입니다. 또한 해당 메소드는 Page 타입을 반환하기 때문에 Page 타입을 직접적으로 조작해야 한다는 제약이 있습니다. 이걸 잘 쓰면 되는데, Page 의 시작번호 등 제약도 있어서 저는 회사에서 Page 를 따로 만들어서 사용하거든요. 그래서 search 메소드와 count 메소드는 항상 분리하고 있습니다. 2. 그런 점에서 count 만 최적화하는 로직만 베껴서 만든 최적화 메소드입니다. 실제로 count 구문을 실행하기 위한 메소드입니다. 필요에 따라서 public 으로 만들어도 될 것 같네요. // count 실행 메소드 private Long countByCond(MemberSearchCond cond) { return query .select(member.countDistinct()) .from(member) .where( usernameEq(cond.getUsername()), teamNameEq(cond.getTeamName()), ageGoe(cond.getAgeGoe()), ageLoe(cond.getAgeLoe()) ) .fetchOne(); } 최적화 로직을 베낀 메소드입니다. 스프링 데이터 JPA 는 아래 코드와 같이 page, size 값이 null 이 아니고, 적절한 범위에 있는지를 판단하여 isPaged 라는 분기를 만듭니다. 참고로 코드를 분석하면서 내린 뇌피셜이니 혹시 틀리다면 말씀해주세요. page 가 0 이 아니라 1 부터 시작하는 건 제 취향입니다. 회사에서 그렇게 쓰고 있거든요. 필요에 따라 0 부터 시작하도록 바꾸는 건 어렵지 않을 것 같습니다. public Long countByCondOptimization(List<?> content, MemberSearchCond cond, Long page, Long size) { boolean isPaged = page != null && size != null && page > 0 && size > 0; long offset = isPaged ? (page - 1) * size : 0L; long contentSize = content.size(); if (!isPaged || offset == 0) { if (!isPaged || size > contentSize) { return contentSize; } return this.countByCond(cond); } if (contentSize != 0 && size > contentSize) { return offset + contentSize; } return this.countByCond(cond); } 이렇게 하여 count 쿼리를 리스트 조회 쿼리와 분리하여 재사용성을 높이면서, 성능도 최적화할 수 있습니다. 감사합니다.
해결됨
실전! Querydsl
강의에서는 Query DSL 4.x 버전이어서 제네릭 없는 예제 코드인 것 같은데, 제가 올리는 버전은 5.0 버전이어서 차이가 있음을 감안해주세요. 정렬 조건을 하나만 추가하는 코드입니다. 정렬 조건을 여러 개 추가하려면 반복문을 돌면서 JPAQuery 를 동적으로 확장해나가면 됩니다. // 페이징하는 메소드에서 사용 private Expression<? extends Comparable<?>> specifyMemberProperty(String prop) { prop = prop == null ? "" : prop.toLowerCase(); if (prop.equals("username")) { return member.username; } if (prop.equals("age")) { return member.age; } return member.id; } // 페이징하는 메소드 // ... .orderBy(new OrderSpecifier<>("desc".equalsIgnoreCase(dir) ? Order.DESC : Order.ASC, specifyMemberProperty(prop))) .fetch(); -- 저는 일단 이렇게 만들어봤는데, 다른 분께서 더 나은 코드, 더 빠른 코드가 있다면 저한테도 알려주세요. 감사합니다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
@ManyToOne @JoinColumn(name = "parent_id") private Category parent; @OneToMany(mappedBy = "parent") private List<Category> child = new ArrayList<>(); 안녕하세요. 위 코드에서 부모 쪽에 다대일 매핑 한 이유를 알고 싶습니다. 아니면 DB 테이블 안에서 부모 셀프 외래 키를 만들어서 조회할 때 이 외래 키를 참조하여 자식 카테고리들까지 같이 조회하게 만들었기 때문에 테이블에서 다는 parent_id니까 jpa에도 parent에 다를 준 건 가 싶기도 해서요 필드 명에 부모 자식이 있어서 부모는 하나고 자식은 여러 개인데 부모 쪽에 다로 돼있어서 헷갈리네요..