SW마에스트로 하면서 진행했던 5인 프로젝트.

프로그래머 4명(대학교 학부생)에 기획 1명으로 진행했다.

2D 비행 슈팅 게임을 만들자! 라는 나의 염원이 이루어진 첫 작품.

C++, DirectX, FMOD, Lua를 사용했다. 기간은 총 한 달. 회의하고 방황한 시간 빼고 본격적으로 코딩한 기간만 따지면 약 2주 정도 된다.

애초에 직접 리소스를 만들 생각이 없었기 때문에 이곳 저곳에서 줏어다 썼다. 특히 Strikers 1945 리소스가 많다. BGM은 배틀필드3.





프로젝트 페이지:
http://dev.naver.com/projects/caffeinea 


반응형




한국에 인터넷 인프라가 막 보급되던 2000년도 초에는 회원 가입 시 자신의 아이디와 비밀번호가 이메일로 전달되는 경우가 많았다. 아마도 아이디랑 비밀번호를 까먹을까봐 전달한게 아닐까 싶기는 하지만 정확한 이유는 모르겠다. 그런데 요즘에도 이런 사이트가 있는 것을 확인했다. 바로 미스터피자이다.

이게 문제가 되는 이유는 여러 가지가 있다.


첫번째로 이메일이 전달되는 과정에서 비밀번호가 들어가있는 패킷이 제 3자에게 노출될 우려가 있기 때문이다. 회사 서버가 이메일 서버로 보낼 때와 내가 이메일을 열어볼 때의 두 시점에서 노출될 수가 있다. 쉽게 말하면 패킷이라는 것은 포장이 되어있지 않은 택배 화물 또는 봉투 없는 편지와 비슷하다. 중요한 내용은 아예 암호화해서 써놓아야 한다.

두번째는 조금 더 큰 문제라고 생각하는데, 바로 비밀번호를 암호화하지 않고 있거나 해독이 가능하다는 암시적인 증거가 되기 때문이다. 내 비밀번호를 저쪽에서 보내줄 수 있다는 것은 데이터베이스 서버에 내 비밀번호를 읽을 수 있는 형태로 저장해놓았다는 뜻이기 때문이다. 만약 미스터피자의 고객 데이터베이스 서버가 해킹을 당할 경우 나의 비밀번호가 해커에게 전달이 될 것이고, 거기다가 동일한 아이디와 비밀번호를 사용하는 모든 사이트가 털릴 것이다. 최소한 아이디는 아니더라도 비밀번호를 사이트마다 다르게 하는 것이 이래서 중요한 것이다. 영세한 회사는 보안이 취약하기 쉬우므로 이런 곳이 털리면 아무리 보안이 철저한 사이트라도 비밀번호를 알고 있으므로 그냥 뚫고 들어갈 수 있다.

만에 하나 이메일에 중요한 정보, 예를 들면 금융 관련 정보를 저장해두고 있는 사람이라면 무시무시한 피해를 입을 것이다.


여기서는 미스터피자가 대상이었지만 아직도 이런 회사들이 많은 것으로 추측된다. 가장 중요한 것은 해킹에 100% 안전한 곳은 어디에도 없다는 것이다. 반드시 비밀번호를 사이트마다 다르게 해주자.


 
반응형

C++에서 C#처럼 enum을 쓰는 방법이 있다!

namespace 관련해서 자료를 조사하다가 나온건데...
(참고: C++ namespace(네임스페이스) 코딩 스타일)
 
 

Unreal쪽 자료를 찾아보다가 여길 보니 enum을 C#스타일로 쓰기 위해 namespace를 사용한다는 내용이 나온다. 나도 예전에 생각해봤던건데 진짜로 쓰는 데가 있었구나!

http://udn.epicgames.com/Three/CodingStandard.html


기존의 C++ enum은 다음과 같은 문제가 있었다.
enum Color
{
    Red,
    Green,
    Blue,
... } void Foo(Color color) { switch(color) { case Red: ... break; case Green: ... break; case Blue: ... break; } }

enum이 전역 공간을 돌아다닐 수 있기 때문에 이름 충돌이 일어날 가능성도 높고 - 예를 들면 어디선가 const string Red = "Red"; 같은거 선언하면 모호해진다 - enum보다는 마치 #define된 상수처럼 보이며, 같은 enum소속인지도 알아보기 힘들고, 같은 enum내에 다른 멤버들이 어떤 것이 있는지 알아보기 힘들며, 어디서 사용되는지 유추할 길이 없는 등의 단점이 있다.

약간의 꼼수로는 Color_Red, Color_Green과 같은 이름을 사용하는 방법이 있긴 하다. 나도 지금까지 이렇게 해왔지만 이제 바꿀 예정!


Scoped enum을 사용하는 방법은 다음과 같다.
 
namespace Color
{
    enum Type
    {
        Red,
        Green,
        Blue,
... } } void Foo(Color::Type color) { switch(color) { case Color::Red: ... break; case Color::Green: ... break; case Color::Blue: ... break; } }
이제 각 enum형 상수들이 소속을 가지게 되었다! Visual Studio같은 IDE를 사용한다면 F12등을 누른다거나 Ctrl+Space를 눌러서 Color의 다른 멤버 목록까지 볼 수 있다.

 
다른 방법 - 밑줄 쓰기

다만 변수를 만들 때 ::Type 이라는 것을 붙여 줘야 하는데 - Color::Type 처럼 - 이것도 싫다면 Color_Red, Color_Green 등올 하는 것이 나을 것으로 보인다.

또 밑줄을 사용할 경우, 단독으로 숫자를 사용할 수 있는 장점이 있다. 예를 들면 Keys_1, Keys_2 처럼 사용하는 것도 가능한데, 만약 namespace를 사용한다면 Keys::1, Keys::2 와 같은 방법은 1과 2처럼 숫자로 시작하는 식별자는 컴파일되지 않는다는 면에서 상대적으로 장점으로 볼 수 있다. 뭐 나같은 경우 Keys::D1, Keys::D2로 쓰고 있기는 하다.


 
반응형

+ Recent posts