프로그래밍/프로그래밍 관련 검색 결과, 35
어셈블리를 처음부터 이해하자 -1-
assembly 어셈블리를 처음부터 이해해자. 어셈블리를 대충 알고 코딩할려니 아무것도 모르겠더라. C#은 아무것도 몰라도 대충하면 뭐라도 나오던데, 어셈블리는 안되는걸 보고 고급 언어란게 이런 의미인가 싶더라..여튼 어셈블리를 수박겉핥기로라도 알아야될 것같아서 써본다.글로만 표현해서 가독성이 좋지않다. 아무래도 나중에 내가 다시 이 문서를 찾아봤을 떄를 위해서 쓰는 글이기에 나에게 초점을 맞춰서 썼다. CPU 구성 어셈블리를 알기위해서 cpu를 알면 더 이해하기 쉽게 간단하게 먼저 설명한다.cpu가 무엇인지는 따로 설명하지 않는다.CPU의 구성은 설명하는 사람마다 범위가 다르다. 좁은 범위로는 cpu가 연산만을 하기위해 필요한 것들만 모아놓았고, 넓은 범위로는 효율적인 연산을 위해 다른 시스템 구성요소..AES 암호화
오늘은 암호화 알고리즘중에 AES라는걸 포스팅해보려고 한다. 당당하게 쓰기는 하지만, 이번에 처음으로 암호알고리즘을 배우고 써보는 것이니 잘못된 점이 있을 수도 있다. 우선 개념을 먼저 몇 개 알아야한다. 대칭 알고리즘 & 공개(비공개) 키 암호 대칭 키 암호는 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘을 의미한다. AES는 대칭 키의 종류로 암호화와 복호화에 같은 키를 사용한다. 이는 보안상 문제가 있기에 보완한 것이 공개(비공개) 키 알고리즘이다. 공개 키 암호는 암호화 알고리즘의 한 종류로, 공개 키와 비공개 키로 암호화와 복호화에 다른 키를 쓰는 알고리즘을 말한다. 이 공개 키 암호는 어떤 키로 암호화를 하느냐에 따라 방식이 달라진다. 공개 키로 암호화를 하는 ..UML을 살펴보자
1. StarUml로 UML을 살펴보자 1. StarUml로 UML을 살펴보자 1.1. UML (Unified Modeling Laguage) 1.2. Diagram 1.2.1. Class Diagram 1.3. Class 1.4. StarUML 1.4.1. StarUML 클래스 1.4.2. Steretype 1.4.3. 접근제어 1.4.4. Relation 표현 1.4.4.1. Association (연관)과 Directed Association (직접 연관) 1.4.4.2. Aggregation (집합) 1.4.4.3. Composition (복합 연관) 1.4.4.4. Dependency (의존) 1.4.4.5. Generalization (일반화) 1.4.4.6. Realization (실제화)와..std::tuple을 알아보자.
1. std::tuple 1.1. tuple이란 tuple은 pair를 확장한 C++ 라이브러리 클래스다. (이걸 뭐라고 부르지..?) pair는 두 개의 값을 저장할 수 있지만, tuple은 제한이 없다. 그리고 멤버에 접근할 수 있는 멤버함수가 없다. 접근할려면 std::get이라는 함수를 사용해야한다....음, 사실 몇일전에 tuple같은 것을 만들려고 애를 쓴 적이 있었다. 그떈, tuple이 있는지도 몰랐기 떄문에 직접 만들었었다. 어떻게 템플릿 떡칠을 해서 만들긴 했는데...가독성도 좋지않고, 단순히 같은 코드를 많이 늘어놓았을 뿐인 좋지않은 코드가 되어버렸다. 1.2. 예시 int main() { std::tuple tu = std::make_tupe(10, 10.2f); std::coutLambda (람다)
1. Lambda 한달간 서버 제작을 하면서 참 많이 사용한 것중에 하나가 이 Lambda다. 이거에 한 번 맛을 들이니 빠져나올 수가 없다...; 1.1. 함수 객체 람다를 만들기 이전에 함수 객체라는 것이 있다. 람다는 함수 객체의 확장판이라고 보면 될 것같다.그럼 이 함수 객체란 무엇이냐? 함수 객체는 객체를 마치 함수처럼 사용하기에 붙여진 이름이고 함수가 되기위한 조건중 하나는 괄호인데, (함수 호출 연산자 Function call operator)를 사용해 파라미터 목록을 받는 것이다. 어떤 객체를 함수처럼 사용한다는 것은 객체에 괄호를 붙여서 마치 겉보기엔 함수를 호출하는 것처럼 사용한다는 의미이다. 출처: http://vallista.tistory.com/entry/C-11-Lambda-Ex..함수 포인터로 함수명 변경하기 (완결)
1. 함수 포인터로 함수명 변경하기 (완성) 지난 번에 함수 포인터로 함수명을 변경하지 못했다. 그 원인은 클래스 내부 함수의 주소는 클래스 주소 + 클래스 내부 함수 주소 로 되어있기 때문이다.이후에 간간히 내 작업을 하면서 방법을 고민했다. 그러던중에 stl에서 지원하는 함수 포인터가 있다는 말을 들었다. 1.1. std::function C++11에서부터 지원하는 이것은 함수 포인터의 반환값이 명시적으로 같은 타입이 아니면 컴파일 에러 발생 (오히려 그게 더 안전할 수도 있긴하다.) 오로지 함수만 호환이 가능하다. (람다, 멤버함수 포인터, 람다함수등 호환불가능) 의 단점을 보완하고 반환값의 암시적 형변환이 가능하다. 멤버함수, 람다, 람다함수등 호환가능 의 장점을 지닌다. 1.2. std::bin..Epoll
1. Epoll 1. Epoll 1.1. 목적 1.2. epoll이란 1.3. epoll과 IOCP 1.3.1. epoll_event 1.3.1.1. union 1.3.2. 레벨 트리거 vs 엣지 트리거 1.3.2.1. 엣지 트리거 1.4. 세마포어 1.1. 목적 2주간 Epoll로 에코 서버를 만들었다. 그 과정에서 알아낸 것들을 정리한다는게 목적. 쓰다보면 epoll과는 무관한 것들이 나올 수 있겠지만, 서버를 만들다보니 알게 된 것들을 정리하는게 이 글을 쓰는 목적이니 그냥 넘어가줬으면 좋겠다. 1.2. epoll이란 epoll은 linux에서 지원하는 입출력 이벤트 통지(?) 모델이다. 1.3. epoll과 IOCP 큰 차이가 없다. 사용하는 함수에서의 차이만이 있을 뿐. 입출력 이벤트 통지의 개..함수포인터로 함수명 변경하기
1. 함수포인터로 함수명 변경하기 1. 함수포인터로 함수명 변경하기 1.1. 동기 1.2. 계획 1.3. 문제점 2. 클래스 멤버 함수 포인터 2.1. (c.*funcArray[0])() 2.2. static_cast 1.1. 동기 클래스 A를 상속받은 B. A의 함수명을 바꾸고 싶다. 1.2. 계획 내가 원하는 함수의 이름으로 된 함수포인터로 함수명을 바꾼 것처럼 할 수 있지 않을까? 1.3. 문제점 그냥 함수포인터로 쓰면 되겠지하고... template class Container { public: virtual T* Push() { //... } protected: //.... }; class Object { public: //... }; class ObjectContainer :public Con..declspec에 대해
declspec에 대해 declspec에 대해 동기 계획 declspce란? 형식 정의 property 원형 C#의 Getter/Setter 프로퍼티 흉내내기 단점 참조한 포스트 dll의 Export와 Import dllimport의 작동원리 참조한 포스트 동기 C#의 Getter/Setter 프로퍼티를 C++에서 쓰고 싶어짐 define을 응용을 어떻게 해야될지를 고민 계획 1. 일단 내 머리로는 안되겠다. 도움이 될만한 사이트를 찾아서 검색! 2. 찾아보니 declspec와 property를 사용하면 손쉽게 만들 수 있다고 한다. 3. declspec와 property를 알아보자. declspce란? 형식 _declspec (extened -attrubute) declarator 정의 함수에 대한 정..Lowpoly
게임 서버 프로그래머 지망생