본문 바로가기

분류 전체보기

(151)
ubuntu 21.04 wired connection 사라졌을때 네트워크 연결 자체가 안되어 ens33이더넷은 ifconfig -a옵션을 해야 겨우보이고 ip조차 할당되어있지 않았다. /etc/netplan/yml파일도 수정해보고 이것저것 해봤지만 안됐고 sudo nmcli networking off sudo nmcli networking on 다음 명령어를 입력해주니 기가막히게 wired connection이 생기면서 연결이 됐다.
Flask+restful+SQLAlchemy+flask_jwt_extended공부 외주를 시작하기전 Flask+restx를 공부했는데 시작하니 Flask+restful로 구현을 해야 했고 많은 공부를 했던것 같다. 천재 리승형 동무의 설계덕분에 구조부터 완벽하다. flask를 구동할 main.py를 기준으로 같은 폴더내에 readme, requirements.txt가 있어서 개발을 하기전 readme를 보거나 requirements.txt로 pip install을 진행해 모두 같은 환경을 구축하기 쉽게 만들었다. 이제 하위 폴더로 api문서를 만드는 docs폴더, 실제 소스코드 구현인 폴더가 있고 docx에서는 각 클래스 별로 폴더를 만들고 각각의 get, post, put, delete인 .yml문서를 만들어준다. post.yml문서를 대충 적어보면 어떤기능인지 기술 --- tags..
github 사용법 정리-fork후 협업하기 보안프로그램 모듈 외주를 진행하면서 github를 사용하게 됐다. 예전부터 간간히 쓰지만 사용을 안할수록 잊어버리기 때문에 정리한다. 우선 실제로 진행하는 프로젝트의 우측상단에서 fork를 통해 나의 계정프로젝트로 복사해준다. 이후 나의 레포지토리 목록을 보면 fork한 폴더가 있다. 해당 폴더로 들어가면 이렇게 나의 개인주소와 원본 프로젝트의 주소가 아래에 나와있는것을 알 수 있다. 이후 나의 작업 컴퓨터에 깃허브를 설치하고 다음주소를 복사하면된다. git clone (복사한 URL) 작업할 컴퓨터의 터미널에서 해당 명령어를 입력해주면 fork된 나의 계정의 프로젝트를 그대로 가져온다.(vscode의 터미널을 이용하는것을 추천) git remote add 사용할 닉네임 (원본 프로젝트의 clone할 U..
Flask-RESTX Swagger를 이용한 문서화 localhost에 들어가면 기본적으로 문서화가 되어있다. app.py from flask import Flask from flask_restx import Resource, Api from todo import Todo app = Flask(__name__) api = Api( app, version='0.1', title="nam's api server", description="nanam's Todo API Server!", terms_url="/", contact="riotgames@kakao.com", license="MIT" ) api.add_namespace(Todo, '/todos') if __name__ == "__main__": app.run(debug=True, host='0.0.0...
flask + rest api 공부 flask의 장점 API Server를 가볍게 구현 할 수 있습니다. Docker나 Kubernetes를 이용해 여러 개의 컨테이너를 사용할때 용이 합니다. 일단 쉽고, 코드가 짧다. 설치 $ pip install flask $ pip install flask-restx 테스트용 코드 from flask import Flask # 서버 구현을 위한 Flask 객체 import from flask_restx import Api, Resource # Api 구현을 위한 Api 객체 import app = Flask(__name__) # Flask 객체 선언, 파라미터로 어플리케이션 패키지의 이름을 넣어줌. api = Api(app) # Flask 객체에 Api 객체 등록 @api.route('/hello')..
D3D Hooking 공부 D3D Hooking이란? Direct3D Hooking은 이전부터 온라인 게임분야, 특히 FPS 게임에서 Wall Hack 이라는 것으로 게임 진행에서 일반 유저들에게 심각한 피해를 입히는 Game Hack을 만들때 사용된 기술이다. 위키피디아에서는 다음과 같이 설명하고 있다. 다이렉트3D(영어: Direct3D)는 마이크로소프트의 DirectX API에서 3차원 그래픽스 연산과 출력을 담당하는 부분이다. 마이크로소프트의 윈도우 운영 체제(윈도우 95 이상)에서만 작동하며, 엑스박스와 엑스박스 360 게임 콘솔의 그래픽 API로 사용되고 있다. 다이렉트3D와 비슷한 역할을 하는 API로는 OpenGL이 있으며 역할은 같지만 각자가 서로 다른 장단점을 가지고 있다. 정리하면 3D게임이나 3D를 요구하는 ..
가상 함수 테이블(vtable) 공부 2 - 자세히 분석 자세히 분석해보기 #include class Parent { public: virtual void show1() { printf("this is parent1\n"); } virtual void show2() { printf("this is parent2\n"); } virtual void show3() { printf("this is parent3\n"); } }; class Child : public Parent { public: virtual void show1() { printf("this is child1\n"); } virtual void show3() { printf("this is child3\n"); } }; int main() { printf("main"); Parent* p = new..
가상 함수(Virtual function)와 가상 함수 테이블(vtable) 공부 오버라이딩 공부 클래스에서 선언된 함수에 대해, 해당 클래스의 자식 클래스가 정의되었을 때 자식 클래스에 서 상속받은 함수를 새롭게 정의하여 사용하는것을 오버라이딩이라 한다. 부모 클래스의 함 수에서 선언된 리턴타입과 함수 인자 구성이 똑같아야 한다.(인자갯수나 타입, 리턴타입이 다른건 오버로딩인걸로 기억)이렇게 정의된 클래스 타입으로 객체를 선언하여 사용하는 경우, 함수를 새로 정의한 자식 클래스를 타입으로 지정하여 함수를 호출했을 때는 새롭게 정의된 함수(자식)가 호출된다. #include using namespace std; class Parent { public: void show() { cout show(); a = c; a->show(); Parent 포인터 변수에 에 b나 c의 객체를 넣어도..