vagrant
VM 이미지를 통째로 배포하는 것 대비 vagrant를 사용해 배포하면 다음과 같은 이점이 있음. 환경에 따라 달라지는 설정이 있는 경우, 예를 들어 배포한 가상머신들이 특정 서버 IP를 바라보도록 설정해야 하는 경우 vagrant를 사용하면 도움이 될 수 있음. port forwarding 같은 가상머신 외부에서 설...
VM 이미지를 통째로 배포하는 것 대비 vagrant를 사용해 배포하면 다음과 같은 이점이 있음. 환경에 따라 달라지는 설정이 있는 경우, 예를 들어 배포한 가상머신들이 특정 서버 IP를 바라보도록 설정해야 하는 경우 vagrant를 사용하면 도움이 될 수 있음. port forwarding 같은 가상머신 외부에서 설...
https://blog.naver.com/alice_k106/221333208746 경험에 비추어 생각해보면, 서버 여러대 일괄작업 및 관리, 이런거 다 쉘스크립트로 하면 되는거 아닌가? 싶은 생각이 들지만 쉘스크립트 짜서 돌릴 수 있는, 또 그렇게 하려고 하는 사람이 그렇게 많지 않다는 점과 쉘스크립트 자체가 그런 목적으로 있는게 아니라는 점, 그...
docker docker container란? Simply put, a container is simply another process on your machine that has been isolated from all other processes on the host machine. That isolation leverages kernel nam...
docstring 작성 포맷 https://stackoverflow.com/questions/3898572/what-is-the-standard-python-docstring-format google style 은 다음과 같은데 타입 적는게 :가 아니라 괄호 안에 들어가서 마음에 안들고, 들여쓰기 때문에 가로축도 많이 차지하고, VSCode에서 힌...
데드락 [!tip] 데드락은 프로세스 2개, 자원 2개만 기억하면 된다. 데드락에는 프로세스 2개, 자원 2개가 필요하다는 사실만 기억하면 케이스를 만들어 낼 수 있다. 교착 상태 조건 4가지 다음 4가지 조건을 모두 만족하면 데드락이 발생한다. Mutual Exclusion : 상호 배제. 프로세스가 타겟 자원을 요구 시 타 프로세스...
DP를 번역하면 동적 계획법 이지만 책 “컴퓨터 과학이 여는 세계”에서는 다이나믹 프로그래밍을 본질적인 의미를 더 살려서 기억하며 풀기 로 더욱 적절하게 번역하였다. 즉, 이전에 구한 작은 부분 문제의 답을, 다음 문제를 푸는데 이용하는 문제 해결 방식.이전 답을 재활용 하면서 더 큰 문제를 해결하는 방식 이다. 피보나치 수열 구하기(그냥 일반항에...
그냥 락 거는 것 보다, 다음 API들을 사용하는게 좋다. 스코프를 벗어나면 자동으로 해제되는 lock을 걸기 위해서는 (since C++ 17 || boost) #include <mutex> std::mutex mutex1; std::mutex mutex2; std::scoped\_lock lock(mutex1, mutex2); // ...
결론부터 말하자면 없어진다. 함수들이 전후 호출 순서 종속성이 생기는 경우 생성자에서 처리하는게 깔끔하다. 생성자에서 처리 안하고 f1()호출하고 c f2()호출하는 식이면, 이 호출 순서를 강제할 수 없으니 c f2()에서 내부에 종속성 변수가 NULL인지와 같이 잘 초기화되었는지 체크해주는 루틴이 들어가 줘야 한다. 생성자는 리턴이 안되니 ex...
전역 함수를 threadMain으로 지정해 실행하는건 그냥 다른 언어 처럼 하면 되는데, 객체의 메서드를 threadMain으로 지정하는건 몇 가지 신경써야 할 부분이 있다. 보통 다른 언어 같으면, Thread 클래스 상속받아서 t.run() 해주면 끝인데, C++은 그렇지 못하다. 구식 방법 원래 클래스 내부의 메서드를 threadMain으로 지...
lambda가 왜 필요하냐면, 함수 포인터는 함수이기 때문에 상태를 가질 수 없다. 반복문 같은데 인자로 함수를 넘겨야 하는 상황에서 그 함수가 상태를 가져야 하는 경우, 함수 포인터를 사용할 수 없다. 따라서 상태를 가지는 함수를 만들기 위해서 함수 객체라는 트릭을 사용해야 했다. 함수 객체는 객체인데, operator()를 오버로드해서 함수처럼 호...