분류 전체보기 검색 결과, 74
사용자 정의 타입에 권한 부여 쿼리 작정시 주의점
MSSQL에서 사용자에게 권한 부여 쿼리는 다음과 같다. GRANT ON OBJECT::SCHEMA_NAME.OBJECT_NAME TO USER_NAME 쿼리에도 보이지만, 낚이기 쉬운게 OBJECT::이다. 생각해보면, 당연한데 OBJECT는 객체다. MSSQL은 테이블이나 프로시저를 객체 취급한다. 다만, 사용자 정의 타입은 객체로 취급하지 않는다. 왜냐면 TYPE은 객체가 아니기 때문. 프로그래밍에서도 class를 객체라고 부르지 않는 것처럼 사용자 정의 타입을 객체로 보지 않는다. 사용자 정의 타입에 대해 추가적인 권한을 부여하고 싶을 경우엔 다음과 같이 작성해야한다. GRANT ON TYPE::USER_TYPE_NAME TO USER_NAME 예시) GRANT EXECUTE ON TYPE::UD..프롬프트창 클릭 시에 '선택-'이라고 되면서 프롬프트창이 프리징되는 현상
프롬프트(콘솔 or cmd)창을 클릭할 시에, 선택 (프로세스 이름)이 되면서 프로세스가 프리징이 된다. 프로세스나 스레드가 루프를 탈 경우에 백단에서 실행되고 있을거라 생각하지만, 선택이 되면 프리징이 되어 작동하질 않는다. 듣기론 윈도우 10부터 이런 기능이 추가됬다고 하던데, 이런걸 왜 넣었는지 모르겠다 ㅡㅡ;; 해결방법은 레지스트값을 수정하면 된다. 레지스트 'HKEY_CURRENT_USER\Console\Quick Edit'를 1에서 0으로 수정하면 된다. 더해서 수정하는 순간 실행되고 있는 프롬프트가 모두 수정되는게 아니라, 바꾼 이후부터 실행된 프롬프트부터 적용된다.어셈블리를 처음부터 이해하자 -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..Lowpoly
게임 서버 프로그래머 지망생