안녕하세요, 영한님. 이번 강의 9분 10초쯤에 flag 와 count 변수에 volatile 키워드를 추가하셨는데, 저는 flag 변수에만 volatile 키워드를 사용해도 예제 코드가 정상적으로 동작할 것으로 예상했습니다. 실제로 flag 변수에만 volatile 키워드를 붙이고 실행해보니 main 스레드에서 가져온 task.count 와 work 스레드에서 가져온 count 의 값이 동일했습니다. 또한 volatile 키워드를 모두 사용하지 않았을 때를 기준으로 flag 변수에만 사용했을 때 약 2배, flag 와 count 변수 모두 사용했을 때 약 5배 정도 성능이 저하되는 것을 확인했습니다. 그럼에도 불구하고 count 에도 volatile 키워드를 사용하신 이유가 있을까요? 제가 생각하지 못한 예외 상황이 있을까요?
다른 분 질문의 답변을 봐도 이해가 잘 안되서 질문 남깁니다! 앞 포인터 강의에서 int *p = &n; printf("%d\n", p); 를 실행하면 n의 주소값이 출력된다고 이해했는데, char *str; printf("%s\n", str); 을 했을때는 왜 myString의 0번째 인덱스 주소값이 출력되는게 아니라 this is string 이 출력되는지 이해가 안되서요.. 설명해주시면 감사하겠습니다!
세션을 실행하고 있어 curl로 실행하려고 하는데 아래와 같은 에러 메세지가 뜨네요. Invoke-WebRequest : 매개 변수 이름 'c'이(가) 모호하므로 매개 변수를 처리할 수 없습니다. 일치하는 항목은 다음과 같습니다. -Credential -CertificateThumbprint -Certificate -ContentType. 위치 줄:1 문자:45 + curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt + ~~실행하면 위와 같은 에러메시지가 나오는데 어떻게 해결할 수 있나요? from fastapi import FastAPI,Request from fastapi.security import HTTPBasic from starlette.middleware.sessions import SessionMiddleware app=FastAPI() app.add_middleware(SessionMiddleware,secret_key="your-secret-key") @app.post("/set/") async def set_session(request:Request): request.session["username"]='smith' return {"message":"Session value"} @app.get("/get/") async def get_session(request:Request): username=request.session.get("username","Guest") return {"username":username}
Waiting 상태의 쓰레드를 Runnable 상태로 만들기 위해선 두 가지 방법이 있다고 배웠습니다. LockSupport 기능 인터럽트 발생 2번 방법에 대해서 궁금한 것이 있습니다. 결과적으로 인터럽트를 발생시켜 쓰레드를 대기 상태에서 실행 가능한 상태로 전이시킨다는 것인데 인터럽트 상태가 정상(false)이 아닌 상태가 나오게 되는데 그럼 실무에서 1번 방법을 더 많이 사용하나요?
#include <stdio.h> void strcopy(char d[], const char s[]) { int i = 0; while (s[i] != '\0') { d[i] = s[i]; i++; } d[i] = '\0'; } int main() { char str1[] = "first"; char str2[50] = "teststring"; int result = 0; strcopy(str2, str1); for (int i = 0; str2[i] != '\0'; i++) { result += i; } printf("%d\n", result); for (int i = 0; i < 10; i++) { printf("%c", str2[i]); } } 출력값: 10 first ring printf("%c", str2[i]); // first ring 이렇게 출력되었는데 while (s[i] != '\0') { d[i] = s[i]; i++; } d[i] = '\0'; 여기서 while타고 s[i]에 first 마지막인 t 가 들어가면 다음 배열이 들어가지않으니 d[i] = '\0'; 들어가고 firist\0 담기는게 아닌가해서 질문드립니다. 그래서 출력값이 first ring 이렇게 나오는게 맞을까요?
3:37 근처에서 Select Kernel을 클릭했는데 myenv-finance-analysis가 드롭다운에 보이질 않습니다. 드롭다운에 Python Environments 만 떠서 그걸 선택했더니 가상머신을 끄고 다시 들어와도 Detecting Kernels만 계속 실행되는 모습입니다. 혹시 왜 이런건지 알 수 있을까요?
안녕하세요! 강의에서 배운 것을 바탕으로 데이터 분석 프로젝트를 진행하고, 분석 내용 및 코드를 노션 포트폴리오에 올리려 합니다. (개인 구직용으로만 사용합니다!) 배운 것을 바탕으로 하다 보니, 강의에서 배운 코드와 같은 부분이 있을 수밖에 없는데 포트폴리오에 사용해도 괜찮을까요?
프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
안녕하세요 선생님 질문있습니다. 예제 내용 중, 아래 코드에서 프린트 파일리드를 한 다음에 file.close()로 open한 파일을 닫아줘야 하지 않나요? 물론 예제 코드가 잘 동작하는 것은 확인 했습니다. 다만 저는 append 모드로 파일을 open하기 전에 먼저 열었던 파일을 close 해줘야 하는게 아닌가 해서 질문드립니다~ ... if menu == 1: file = open(file path, 'r') print( file.read ()) # 이 부분에서 file.close() 해줘야 하는것 아닌가요?? file = open(file path, 'a+') print() ...
개발용 PC가 리눅스라면 괜찮은데, 윈도우에서 개발한다면 배포시에 보통 리눅스에 배포하게 될텐데.. 그 경우 개발환경과 배포환경이 다름으로 생기는 패키지 관리 문제가 생기는데 강사님은 어떻게 해결하시나요..? cookiecutter-django로 프로젝트 세팅을 간소화 하려고 하는데, 도커에서 서비스가 돌아가다보니 디버깅 하기가 까다롭네요.. pycharm에서는 보통 어떻게 하나요? vscode에서는 debugpy를 제가 수동으로 설정해서 디버깅 처리를 했는데, 이 방법은 너무 번거롭더라구요.. 요지는 윈도우 개발환경에서 도커 컨테이너에서 돌아가고 있는 코드를 어떻게 디버깅 하느냐에 대한 질문입니다.. 좋은 강의 제공해주셔서 감사드리며, 강의 주제와는 좀 벗어나지만 답변 주시면 개발하는데 많은 도움 될 것 같습니다.
1:57에서 '나눈 이후의 몫을 원할 때' 사용하는 연산자가 /라고 하셨습니다. c언어 기준으로 설명해 주신 걸로 이해했는데 (파이썬은 /을 쓸 시 나누어 떨어질 때까지 계산한 값, 혹은 무한소수를 끊어 출력하고 정수 몫을 원할 시 //을 써야 하니까요) 혹시 자바도 c언어와 연산자가 동일한가요? 코딩을 배우기는 하나 컴공만큼 깊게 들어가는 과는 아니라 자바를 배운 적이 없어 질문드립니다.
우선 제가 이 문제를 풀었던 방식을 설명드려보겠습니다. i는 그냥 0부터 시작이다라고 생각해서 i=0일 때 0번 인덱스는 apple이니까 문자열이 맞으니까 result에 0-를 추가하고 i=1일 때 1번 인덱스는 3인데 문자열이 아니라 숫자니까 1을 문자화 해서 result에 이어붙여서 0-1이 되고 이걸 쭉 반복해서 이 문제의 정답으로 0-12-34로 풀었습니다. 그런데 해설을 들어보니 33분41초에서 강사님께서는 i는 처음에 apple을 가지고 온다라고 말씀하셨습니다. 아무래도 제가 접근을 잘못한 것 같습니다. for i in lst을 제가 for i in range(len(lst))으로 보고 잘못 풀었던 것일까요? for in in lst는 그냥 lst의 인덱스가 아니라 그 값을 하나씩 가지고 온다는 뜻인가요?