Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

외관만 블로그인 프로젝트

이 프로젝트는 얼마전에 후기를 올렸던 블로그 프로젝트의 결과물이다.

누가와서 이걸 보진 않겠지만 혹시나 모르니까.... 내 개인적인 히스토리적인 의미로 소스코드를 올리기는 하지만 소스를 보지 않을것을 권한다. 후기에 올린대로 많은 문제가 있었고 문제해결하느라고 구성은 완전 엉망이 되었고 주석도 달지 못했다.

더군다나 우리 팀원 6명중에 이 소스의 구조를 이해하고 있는 것은 내가 유일할 정도이다. 내가 만든거에 K군이 만든 로그인만 붙힌건데 K군도 이 소스는 거의 이해하지 못한다. ㅡ..ㅡ

DB는 오라클 9i를 사용했고 DB쿼리는 각 DTO의 상단에 주석으로 넣어놨고 회원가입은 없기 때문에 회원DB는 미리 넣어놔야 로그인이 가능하다. 머 로그인하나 안하나 기능의 차이는 없다. ㅡ..ㅡ

blog_home에 있는 것이 JSP파일들이고 Src에 있는 것들이 java파일들이다.


index.jsp가 처음이고 이 파일에서 blogtemplate.jsp로 포워드 시키면서 로그인에 대한 세션들을 set하고 blogtemplate.jsp에서 보드를 인클루드할 부분에 대한 변수인 blogcontents라는 파라미터를 던져준다. (blogtemplate2.jsp와 3은 필요없는 파일이다. 테스트하다가 마무리되어서 잡코드가 좀 있다.)

blogtemplate.jsp에서는 일단 보드가 달리는 부분부터 보겠다. 이곳에서 인클로드는 blogcontents라는 파라미터를 이용해서 한다. 그리고 로그인에서 파일이 이동될때를 위해서 현재의 blogcontents의 내용을 세션에 저장한다.(이건 초기 실수에 대한 부분때문에 어쩔수 없는 선택이었다.)

보드는 board/read_board.jsp가 시작파일이고 여기서 글쓰기 등의 버튼을 누를때 다음파일로 이동하는데 이동할때는 항상 blogtemplate.jsp로 이동하면서 원하는 보드파일을 GET방식으로 해당파라미터에 파일경로를 보내주는 방식을 이용하였다.(치명적인 설계실수의 하나..)

방명록은 guestbook/guestbook.jsp가 시작파일이다. 여기서도 이동하는 건 동일하다.

이제 문제는 login부분이다. 보드만 붙혔을대는 아주 잘 작동했다. 아무런 문제도 찾을 수가 없었다. 흡족한 상태였다. 문제는 login을 붙히려고 하니까 위의 방식으로 login에서도 파일이동이 이루어지면서 login이 붙을 부분에 대한 파라미터를 GET방식으로 던져주려고 했었는데 막상 하니까 login쪽을 던져줄때 당연히 blogcontents 파라미터도 같이 던져주어야 하는 문제가 발생했다. 이는 보드쪽에서도 마찬가지....  이걸 해결하기 위해서 로그인쪽에는 항상 동일한 진입부 파일을 두었다.

그게 login/loginmode이다. blogtemplate.jsp에서 로그인부분에는 항상 이파일을 인클루드하고 loginmode라는 세션을 만들어서(index.jsp에서 만들었다.) 각 파일에서 여기서 현재 loginmode에 설정되어 있는 값에 따라서 loginmode파일이 해당파일을 다시 인클루드한다.(인클루드를 계속 해주는게 안좋다는데 게시판도 그렇고 여기서도 그렇고 이중인클루드가 계속 나타나고 있다.)

어쨌든 이런식으로 돌려서 돌아는 간다.....




블로그는 나름대로 리플도 되고 방명록도 답변이 가능하다. 구조는 개판이다. 보기엔 그래두 꽤 된다.

블로그 게시판은 파일업로드가 달려서 추가 눌러주면 아래박스에 업로드된 리스트뜨고 자동으로 본문에 img태그 입혀서 태크형태도로 넣어준다. 복사는 userdata폴더로 복사한다. 태그는 자동으로 넣어진 것이라서 태그를 넣은뒤에 공백이든 머든 한칸은 입력해 주어야 태그도 저장이 된다. 그냥 완료하면 입력된 태그는 날라가 버린다. 그리고 올린 사진의 삭제는 되지 않는다. (하드 용량 많다.. ㅡ..ㅡ) 이미지파일인지의 검사라든지 이미 있는파일에 대한 검사같은건 하지 못했다.

common은 공통이 되는 css파일과 자바스크립 파일이 들어있다. 나중에 보면 이런 미친코드를 봤나 하겠지만 나름 아쉬움이 많이 남은 프로젝트를 이렇게 올린다.. ㅠ..ㅠ

2007/06/20 00:34 2007/06/20 00:34

마방진 만들기

VS 2005에서 C#으로 만든 마방진....

마방진(Magic Square)이란 1에서 n2까지의 정수를 n행 n열의 정사각형 모양으로 나열하여 가로·세로·대각선의 합이 전부 같아지도록 한 것이다.

마방진은 쉽게 말하면 3이상의 수로 NxN의 진을 만든후에 각 칸에 숫자를 넣어서 가로, 세로, 대각선의 합을 모두 동일하게 만드는 것인데 이걸 프로그램으로 만든것이다.

차수에 따라 여러가지 마방진을 해결할 수 있는 해법이 존재하고 있는데 나는 신권영의 마방진 세상에 나와 있는 해법을 가지고 마방진을 만들었다.

기본적으로 홀수차 마방진을 만드는 방법이 가장 쉽고...

4N차수의 마방진을 만드는 것이 약간 어렵고 4N+2차수의 마방진을 만드는 것이 가장 어렵다.

AbsMabangzin.cs -> 마방진해법 클랠스들에서 공통적으로 사용하는 추상클래스
CheckMabangzin.cs -> 마방진을 만든 후에 마방진이 제대로 만들었는지 확인한다.
DecideMabangzin.cs -> 메인클래스에서 마방진을 만들려고 숫자를 받았을때 어느 마방진해법을 사용할것인지를 선택한다.
Even4NMabangzin.cs -> 4N차수 마방진에 대한 해법
Even6NMabangzin.cs -> 4N+2차수 마방진에 대한 해법
MabangzinMain.cs -> 메인, 숫자받아서 DecideMabangzin 호출
OddMabangzin.cs -> 홀수차 마방진에 대한 해법



2007/06/18 10:35 2007/06/18 10:35