'Computer/My Apps'에 해당되는 글 2건

  1. 2008/07/17 단어 암기 프로그램 「記憶のカケラ」 1.00 공개 (37)
  2. 2007/06/10 미궁게임 PHP 버전 (2)

드디어 My Apps 카테고리에 글이 올라오는군요.


거의 1달간 야심차게 만든 단어 암기 프로그램 記憶のカケラ(키오쿠노카케라 : 기억의 파편)입니다. 이름만 일본어이지, 사실 일본어와는 아무 상관 없습니다.

사용자 삽입 이미지


사실 이 프로그램의 콘솔판은 3년 전부터 개인적으로 사용해 왔으나 버그도 많고 도저히 공개할 수준이 못 되어서 이제서야 공개판을 냅니다.

어디선가에서 읽은 책에 한 외교관의 이야기가 소개되어 있었습니다. 매 회의마다 다른 외교관들의 얼굴과 이름, 성격이나 특징 등을 외워야 했던 외교관은 독특한 방법으로 쉽게 외울 수 있었고, 이 방법을 단어 암기에 응용한 것이 記憶のカケラ입니다.

사용자 삽입 이미지

개발 환경이 C#인 관계로 .NET Framework 2.0 이상이 필요합니다. 설치 과정에서 .NET Framework가 설치되어 있지 않으면 설치 페이지가 열리므로 설치하시거나 다음 링크를 참조하시기 바랍니다. (http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=ko )

왜 프로그램 이름이 記憶のカケラ가 되었냐고 하면 그냥 장난 삼아 X-Japan의 Rusty Nail이라는 곡의 첫 가사인 記憶のカケラ를 프로젝트명으로 삼은 것이 결국 프로그램 이름으로 굳어졌습니다. 본래 개인적으로 사용하던 콘솔판 프로그램의 이름은 'Memory Helper'였습니다(-_-).

아이콘도 도저히 만들 자신이 없어서 '내 그림' 폴더에서 가장 눈에 띄는 '귀리' 사진의 일부를 잘라서 만들었습니다. 누런 아이콘의 정체는 바로 '귀리'입니다.

단어장은 맨 윗줄에 단어의 개수가, 그 다음 줄부터 단어와 뜻이 번갈아 한 줄에 하나씩 있는 형태를 취합니다. 즉, 다음과 같습니다.

3
dog

cat
고양이
pig
돼지


아무튼, 첫 프로그램이다보니 이것 저것 부족한 게 많습니다. 단어장 형식도 제한이 심하고, 여러 가지 허접해 보이는 것이 사실입니다만, 자체 기능은 쓸 만 하니 너그러이 봐 주셨으면 합니다. 버그가 있을 경우 이 포스트에 댓글로 남겨 주시면 다음 판올림에 적용하도록 하겠습니다.

개발 환경 : Microsoft Visual Studio 2005
개발 언어 : Visual C#
개발 기간 : 약 1달




2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry
우리 반 H모씨 曰,
 "미궁게임 문제 줄테니까 웹페이지좀 만들어줘."

뭐 그냥 일반적인 미궁 게임처럼 페이지 이름을 답으로 해서 넘어가는 형식으로 하면 되지만, PHP 공부도 할 겸 해서 DB에 문제와 답을 저장하고 하나의 페이지에서 다 할 수 있는 일명 '미궁게임 PHP Version'을 만들어보았습니다.

사용자 삽입 이미지

문제 페이지입니다.


사용자 삽입 이미지

사용자 삽입 이미지

만세~


모든 작업은 index.php 하나에서 이루어집니다. 현재 풀고 있는 문제는 세션을 이용하여 처리할 수 있도록하였습니다. 세션을 이용하여 자료를 저장하는 방법을 아키군에게 물어보니, 세션 변수에 스테이지 자체를 저장하라고 하더군요. 하지만 그래도 변수인데 솜씨 좋은 놈이 조작할까 왠지 모를 걱정이 되어 세션과 DB를 연동하여 자료를 저장했습니다. 일단 제가 저장할 것은 stage이기 때문에 데이터베이스에 session용 테이블을 하나 만들고, 여기에 session_id, expire, stage와 같은 3개의 필드를 만들어주었습니다.

session_id는 그야말로 해당 세션의 고유 아이디를 저장하고 있고, expire는 해당 세션의 만료 시간, stage는 실제로 저장될 풀고 있는 문제 번호를 저장하는 필드입니다. id는 30자리의 1부터 9까지로 이루어진 문자열을 임의로 생성하여 할당했으며, 만료 시간은 기본 1시간으로 설정하였습니다.

일단 사용자가 최초로 사이트에 접속하면 세션이 있는지를 검사하고 없다면 새로운 id를 할당한 후 이를 세션 변수에 저장하고, 생성된 id를 DB에 저장합니다. 물론 DB의 stage필드의 값으로는 초기값인 1을 넣어주어야겠지요. 만약 사용자가 문제를 맞혔다면 세션 변수에 저장되어 있는 id를 이용하여 DB에서 id와 일치하는 레코드를 찾고, 해당하는 stage값을 읽어와 1 증가시킨 후에 업데이트합니다.

또한 페이지가 열릴 때마다 세션 테이블에서 만료 시간이 지난 레코드를 모두 찾아 삭제해줍니다. 이렇게 하면 최근 1시간 이내에 생성된 세션만 남아있게 됩니다.

사실 이외에도 몇 가지 부수적인 것들이 많이 있습니다. 아직 함수화를 하는 데 익숙치가 않아서 소스코드가 매우 난잡한 게 최대 단점이랄까요. 뭐 그래도 보안상 신경을 쓴다고 써서 만든 것이니(솔직히 보안 할 문제도 아니지만) 쉽게 뚫리지는 않겠지요.

버전 업좀 하고 문제좀 만들어서 올린 후에 공개하겠습니다.


2008년 1월 19일 이후 작성된 모든 글에 대해서 퍼가는 것을 금지합니다.
퍼가고자 하시는 분은 링크를 달아 주시기 바랍니다.
Posted by Harry