안녕하세요 강의 수강 후 혼자 복습하는 중인데 세마포어 초기값 관련 이해가 가지 않는 부분이 있어 질문 드립니다. 1번 질문. 05_SEM 실습예제에서 sem_id = xSemaphoreCreateBinary(); -> 초기값 0? --- loops = 10; for(;;) { // 세마포어 대기 if ( xSemaphoreTake(sem_id, portMAX_DELAY) == pdTRUE) { printf("."); fflush(stdout); } sem_val=uxSemaphoreGetCount(sem_id); //printf("sem_val is %d\n", (int)sem_val); if(loops == 0) break; // exit loops--; } 위의 경우 printf 출력되지 않고 세마포어에 의해 바로 태스크가 블럭상태에 빠집니다. 따라서 초기값은 0으로 예상됩니다. 07_MUTEX 실습예제에서 mutex_id = xSemaphoreCreateMutex(); -> 초기값 1? --- int buyTicket(void) { /* TODO #2: MUTEX 을 이용하여 공유변수(tickets)를 보호한다 */ #if 1 // CRITICAL SECTION(ENTER) xSemaphoreTake(mutex_id, portMAX_DELAY); #endif // TODO #2 tickets --; // ticket count #if 1 // CRITICAL SECTION(EXIT) xSemaphoreGive(mutex_id); #endif // TODO #2 return(tickets); } 위의 경우 초기값이 1이어야 해당 함수가 바로 블럭에 빠지지 않고 수행되므로 1로 예상됩니다. 영상에서는 초기값이 1로 수행된다고 이해했는데, 그렇다면 세마포어 예제에서 printf함수가 수행이 되는게 맞는데 되지 않습니다. 초기값이 서로 다르게 입력되는 것인지 궁금합니다. 2번 질문. 05_SEM 실습예제에서 카운트값을 디버깅하고 싶어서 보다가 #if 1 sem_id = xSemaphoreCreateBinary(); if (sem_id == NULL) printf("xSemaphoreCreateBinary error found\n"); sem_val = uxSemaphoreGetCount(sem_id); --- loops = 10; for(;;) { // 세마포어 대기 if (xSemaphoreTake(sem_id, portMAX_DELAY) == pdTRUE) { printf("."); fflush(stdout); } sem_val=uxSemaphoreGetCount(sem_id); //printf("sem_val is %d\n", (int)sem_val); if(loops == 0) break; // exit loops--; } 세마포어 생성 후 uxSemaphoreGetCount 함수를 호출하면 세마포어가 블럭상태에 빠지지 않고 printf함수가 출력이 됩니다. (실제 디버깅 해보면 sem_val 변수값은 0으로 찍힙니다) 위 함수에서 V연산을 하는 행위가 있는 것인가요? 3번 질문. xSemaphoreCreateBinary()와 vSemaphoreCreateBinary()의 차이점이 무엇인지 궁금합니다.
System. out .println(); 을 찍으면서 공부 하던중 System. out .println(fileItem.getName()); 을 찍어보니 "IMG_0142.JPG" 이런 식으로 파일이름만 나오더라고요. fileName=fileItem.getName().substring(idx+1); 코드를 fileName=fileItem.getName(); 이렇게 바꿔서 넣어줘 봐도 오류 없이 잘 실행 되더라고요. 왜 저런 식으로 코드를 처리하셨는지 제가 놓치는 부분이 있는 거 같아서 질문드립니다. 감사합니다 !
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 다대다 관계는 실무에서 한계가 크다는걸 배우고 다대일 일대다 관계로 중간엔티티 CategoryItem을 만들어서 해보려고 하는데 그떄 어떻게 연관관계를 짜면 될까요? 어떤컬럼을 어떤식으로 받아오면되는지 헷갈립니다...
교재와 영상엔 쿠키 secure attribute에 대해서 "그러나 Chrome 52 이상 및 Firefox 52 이상을 포함한 일부 브라우저는 보안을 강화하고 안전하지 않은 사이트(HTTP)가 Secure 지시문으로 쿠키를 설정하는 것을 금지하기 위해 이 사양을 현재는 무시합니다." 라고 설명이 되어있는데 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie 위 링크에서 secure 관련 설명엔 "Insecure sites ( http: ) cannot set cookies with the Secure attribute (since Chrome 52 and Firefox 52). The https: requirements are ignored when the Secure attribute is set by l ocalhost (since Chrome 89 and Firefox 75)." 라고 되어있어요. Chrome 52 이상 및 Firefox 52 이상부터는 안전하지 않은 사이트(HTTP)가 Secure attribute로 쿠키를 설정하는 것을 금지하고 있다. 까지 아닌가요? 이 사양을 무시하는 건 사이트가 로컬호스트일 때인데, 해석을 잘못하신게 아닌가 싶어서요.
Interface를 이용하여 완충재를 두고 테스트를 할 때는 테스트를 위한 mock 구현체를 이용하여 final 메소드를 stub하는 것을 피한다는 것은 이해를 했는데요. 갑자기 드는 생각이 결국 프로젝트가 배포될 때는 SystemUuidHolder라는 구현체를 사용하게 되고 그러면 해당 클래스의 대한 테스트도 진행해야 하나요? 진행한다면 해당 클래스는 UUID를 사용하고 있으니 final 메소드를 stub하는 상황을 피할 수 없게 되는건가요?
프로트 서버에서 config.js안에 있는 주소 바꿔주고 npm run build 했는데 계속 빌드가 안됩니다. 용량이 너무 커서 서버가 멈춘것일까요? 다른 분 질문 한것을 보니까 이럴경우 로컬에서 빌드를 하고 git push 할때 .next 파일도 같이 보내주는 경우를 봤는데, 이렇게 해도 상관 없나요? 아니면 다른 부분에서 이슈가 있어서 빌드가 안되는 것일까요? 음...터미널을 닫고 ec2서버 다시 연결하려는데, 연결이 안되고 계속 저기 상태에서 연결이 안되네요...서버에 이상이 생긴걸까요? 감사합니다.
안녕하세요. 회사 신규 프로젝트로 Spring Boot와 JPA를 이용해 백엔드를 개발하고 있는 직장인입니다. 원래 C#개발자다 보니 수업을 들으며 차근차근 따라가 보지만 의외의 경우가 발생해 힘들지만 좋은 강의에 항상 재밌게 배우고 있습니다. 이번에 문의드릴 내용은 fetch join된 table에 다시 fetch join 하는 방법에 대해 문의 드리고자 합니다. 문제의 테이블 구조입니다. Count Table과 Contract Table은 company_code라는 pk로 N:1구조 Contract Table은 Company Table과 company_code라는 pk로 N:1구조 로 구성돼 있습니다. 그리고 Count, Contract Table은 매핑되는 키에 대해서 FetchType을 Lazy로 설정한 상태입니다. 저는 여기서(JPQL기준) Count Table을 기준으로 Contract Table까지는 fetch join에 성공했지만 추가로 Company관련 쿼리가 N+1처럼 추가됐습니다. 혹시 제가 JPQL혹은 Query DSL방법으로 Contract Table과 Company Table을 fetch join 처리 후 다시 Count Table과 fetch join해 쿼리 하나로 해결 할 수 있는 방법이 있을까요? 감사합니다. :D
안녕하세요! 강사님 이렇게 쉽게 핵심만 알려주셔서 너무 감사합니다 L4 스위치 내용을 보고 궁금한 것이 있습니다! 보통 네트워크 망을 구축할 때 모여 있는 서버 존 마다 물리는 스위치가 다 다른가요? 예를 들어, 부하가 많은 웹 서버 존 은 로드 밸런싱이 필요하니 위에 L4 스위치 아래에 물리고 유저가 모여있는 엔드단은 로드밸런싱이 필요 없으니 L2 스위치 등등 UTM 혹은 방화벽이 우리 서버 내부를 막아주는 역할을 하는데 최초 앞단에 굳이 WAF 를 넣는 이유는 방화벽, UTM 장비로는 웹 방어 기술의 한계 때문 인가요? 아니면 방화벽의 부하를 줄이기 위함 인가요? 혹시 WAF는 그냥 로드밸런싱도 되던데 L7 스위치라 봐도 무방한가요? 다른 예시지만 이중화 시킨 가상화 서버에 여러 서비스를 이용하면 된다 생각 하는데 한 서비스 당 하나의 서버를 통으로 쓰는거를 보면서 리소스 분배 명분 이라지만 마케팅으로 장사하기 위함이지 않나 생각이 들때가 종종 있었습니다
sql 파운데이션, sql 분석 강의를 들으며 업무를 겨우 겨우 하고 있는 신입 데이터 엔지니어 입니다 인덱스 라는 것을 잘 모르는데 해당 강의를 더 잘 이해 하기 위해 어떤 것들을 선행으로 공부하는 것이 좋을까요 또, 추 후에 해당 강의를 듣기 위한 선행 과목들을 묶어 강의를 내주실 의향이 있으신가요?
안녕하십니까 영한님. 강의 유익하게 잘 들었습니다. 덕분에 궁금증이 많이 해결되었습니다. 다름이 아니라, 제가 Pageable를 사용한 페이징 기능을 테스트 해보는 과정에서 sort의 property에 실질적인 entity 정보가 노출된다고 생각되어 고민에 빠진 상태입니다. 페이징 관련된 파라미터를 dto로 받게되면 유효성 검사는 가능하나 sort의 순서를 보장하기 어려워 추가적인 파라미터가 필요하다고 생각됨. pageable로 받은 후 for문을 돌려 유효성 검사를 하게 되면 하위의 단계로 나눠지는 불편함 1) controller에서 dto로 유효성 검사를 위한 for문 2) entity는 service에서만 사용하게끔 유도하기 위해 controller에서는 유효성 검사가 끝난 dto를 service로 넘겨서 entity로 재조립하는 for문 등등 여러가지 방법들을 고민해보다 질문드립니다. 실질적으로 실무에서 사용되는 Paging 기법이 있거나 개선 사항이 있으면 공유해주시면 감사하겠습니다.