U E D R , A S I H C RSS

MFC Study_2001/진행상황

1. 공지

  • 모든 프로그램의 접수처는 neocoin@orgio.net 입니다. 링크 시키란 의미가 아닙니다.
    • Release 로 컴파일 해서 보네주세요. 실행파일만 주세요
  • 1월 9일자 진행 프로그램: 혜영 인수 선호 상협 (창섭이는 부탁으로 제외하고 다음 이시간에)
  • 1월 15일 2시까지 pc실로 모여주세요. 역시 나름대로 해오시고 결과물 보겠습니다. 15일 결과물을 보고 이후 일정과 할일을 결정하겠습니다.
  • 2002. 1. 22 화요일 오후 2시 pc실로 모여주세요 : 역시나 마찬가지 진행 상황의 확인이고, 29일에 종칩니다.
  • 차후 일정에서 29일을 마지막으로 한다는걸 30일로 변경하겠습니다. 29일에 ibm에서 세미나가 있어서 갈려고 합니다.
  • 30일에 영창, 영서군의 참여도 있었으면 합니다. 참석해 주세요. 최종 정리와 지금까지의 스터디의 진행을 되돌아 보려고 합니다.

2. 지나온 일정

  • 2002. 1. 7 월요일 1시 정모에 회원 모임 (모두 참석) 제출 프로그램:
  • 2002. 1. 15 화요일 모임 : 상협+창섭= 오목 알고리즘 정리(창섭 열심히 하게나.), 인수+선호=MM Timer 사용법 및, 주의사항 문서화(아직 GDI 리소스 세는거 미해결 부분 해결 해)
  • 2002. 1. 22 프로그램 진행 상황의 체크 종료. 진행상황 점검과, 체크사항, 프로그램에 대한 의견 교환
  • 2002. 1. 30 최종 정리 시작
    • 여름 방학 1차 MFCStudy, 2차 2학기 MFCStudy 일정 정리
    • 위키 도입 관련 계획 정리, 현재 우려 사항
    • 이번 스터디의 추진력에 대한 유발 동기
    • 개인들에 관한 최종 정리 : 이번주 2월 3일까지 프로그램을 주세요. 최종 정리는 4~6일 사이에 이루어 집니다.
  • 2002. 2.14 최종 정리 종료: 마지막으로 끝낸 프로그램을 결과물 페이지에 올렸습니다.
  • 2002. 2.22 상협의 오목을 업데이트 했습니다.

3. 제안, 토의 사항, 한숨, 잡담 : 각 팀원들이 적어 주세요.

  • 도저히 배경그림으로 쓸걸 못찾겠어요........ 제발.. 쓸만한 배경그림좀... !! --선호
  • 2002. 1. 22 화요일 오후 2시 : 역시나 마찬가지 진행 상황의 확인이고, 29일에 종칩니다. --상민
  • 차후 일정에서 29일을 마지막으로 한다는걸 30일로 변경하겠습니다. 29일에 ibm에서 세미나가 있어서 갈려고 합니다. --상민
  • 2002. 1. 30 최종 모임 그리고 변 : 영창군 영서군도 참석하시길. 완전 정리입니다. --상민
  • 사실 22일을 마지막으로 종지부를 찍으려 했지만, 30일을 종착점으로 삼겠습니다. 일단 프로젝트 상황 체크는 종료이고, 종료하는 이유는 언급한것과 같이 Java에 좀더 신경을 써달라는 의미와 더 자세한 이유는 다음 30일 최종 모임에서 이야기 하겠습니다. 여름방학부터 진행되어 왔던 계획들의 이야기와, 그동안의 거시적 미시적 성과 같은것을 살펴보겠습니다. 그리고 영서, 영창 오세요. --상민
  • 진행상황 체크는 하지 않지만 마지막 각자의 산출물을 30일에 링크 걸고 이 위키 페이지 최종 정리에 들어 갈것입니다. 30일 이후에 프로그램을 받겠습니다.

4. 진행 경과

4.1. 선호 : snowflower - 벽돌깨기

  • 1월 6일 : 최악의 상황입니다. 작업진행률 0%. 어쨌든 내일까지는..! 발전이 없을것 같습니다.
  • 1월 7일 : 현재 재 제작을 하고 있습니다. 예전에 만들었던 부분까지 완성했구요. 벽돌은 또 미뤄야 하겠네요.. 쿨럭
  • 1월10일 : 더블 버퍼링을 구현하여 깜빡임을 없앴습니다. (저희집에선 없는데.. ㅡ.ㅡㅋ 과연.. 학교컴에서는 어떨지..ㅡㅡ;;)
  • 1월12일 : 커서를 사라지게 했습니다. 커서의 시작점도 바의 중간으로 옮겼고, 그리고 안정성 죄금 증가.(과연 증가한건지는 알 수 없네요.)
    그리고, 98에서 나타나는 문제점(종료후 화면잔상)이 ME에서는 일어나지 않는 관계로 테스트가 불가능합니다.

    죽었을때 창이 닫히게 했는데. 어설픈 속임수를 썼습니다. 그런데 생각외로 잘 닫히네요. ㅡ.ㅡ;
  • 1월13일 : 메뉴를 추가 했는데.. 메뉴가 달랑 두개. 그리고 죽었을때.. 처리를 ㅡ.ㅡ;; 아 정말 왜그런지 모르겠네요.
  • 1월20일 : 바와 충돌 처리를 거의 완료했고, 스테이지 제작중입니다.

    스테이지 3까지 제작이지만.. 1판은 어이가 없고.. 2판부터 제대로 된 스테이지 만드려면 얼마든지 만들수 있을거 같네요.
  • 1월24일 : 기본틀은 완성이라고 친다면. 남은건 일단 그려주는 부분의 수정, 공의 충돌체크, 그리고.. 공과 바가 충돌시의 각도.. 정도일까요?

4.2. 인수 : Lovely_인^^수_너부리 - 벽돌깨기

  • 진행 상황 : 3번째 다시짜기
    • 1월 5일 - 공( 기존 지뢰찾기 스마일 표시 차용 ), 배경, 마스킹, 공 출동 처리, 벽돌 깨지는 부분 처리(반응이 즉각 안옴-뭘로 가렸다가 치워야 깨진게 보임)
    • 1월 10일 - 블록 내구도별로 색깔 다 나옵니다. 전통적인 게임 색깔상 가장 나은상태(내구도4):파랑
      그저그런상태(내구도3) :초록
      조금안좋은상태(내구도2):노랑
      완전안좋은상태(내구도1):빨강
      박살난상태(내구도0):배경그림
      이렇게 해서 그려줘써요.
    • 1월 11일 - 멀티미디어 타이머 쓰다가 계속 에러가 난다. 자꾸 형이 틀렸다고 나오는데 열받아서 때려쳤다. 나중에 기분풀리면 다시.. 벽돌 즉각즉각 깨짐. 블록 두개에 동시에 부딪칠때도 같이 처리. 이제 95프로 정도 기본틀 완성. 죽을 때 처리만 해주 면 완성. 그 뒤로 미사일이나 아이템 넣고 싶으면 넣을 생각..-.- 100 프로 완성! 벽돌 다 깨지고 죽는거 처리돼고 어쨌든 지금 보기엔 완벽한것 같음. 앞으로는 좀더 이쁘게 다듬어볼 생각..~~ 멀티미디어 타이머를 쓴다고 써봤는데.. 확실히 바를 막 움직여도 공은 상관안하고 원래 속도 유지하면서 가긴 하거든요 근데 호출주기를 너무 줄여버리니까(1~20정도) 바가 움직이지 못하는 현상이... 끝낼때는 디버그 에러도 나더군요. 뭐 가 잘못된 건지..
    • 1월 12일 - 마우스로 움직이는 것까지 가능하게 했습니다.(이건 혜영이 누나께 마우스,키보드 다 된다는 걸 보고..-.-) 확실히 마우스로 왔다리갔다리 하니까 훨씬 부드럽게 움직이네요. ClipCursor()인가? 요거로 영역 지정해줘서 마우스 커서가 박스 밖으로 못나가게 해놨구여. 키보드는 너무 무뚝뚝하게 움직여서리..-.-;;

  • 알게된점 또는 처음해본것 : 내가 만든 클래스 넣기,has-a 포함 이랑 더블 버퍼링이랑 2차원 배열 전달하기,강제 형변환의 위험성,
    lib파일 포함시키는 범,릴리즈 모드와 디버그 모드의 차이점,메인 윈도우의 포인터 얻어오기(CAlcaDlg *pDlg=(CAlcaDlg*)AfxGetMainWnd();)
  • 기타 : 삽질하다가 내 이쁜 스마일 공이 날아가버림 걍 검은 배경이랑 보색이 맞게 노란공으로 바꿨음 * 앞으로 할것 : 아이템 넣기, 미사일 쏘기(--;), 멀티미디어 타이머 다시 해보기 등등..
  • 이상한 점 : 내껀 왜 일케 실행파일이 클까..--;; 거의 2메가 가까이 되네.. 컴파일할때 뭔가 설정을 해줘야 하는것일까.. 음.. 제 배경화면 비트맵이 24bit 트루컬러라서 굉장히 커서 그런걸까요..-.-
  • 이상한 점2 : 울집에선 잘 돌아간단 말얏! 왜 딴집에선 안 돌아가는 거시야..ㅠ.ㅠ 리소스 새는 걸 어떻게 잡지.. DeleteObject 다 해줬고.. 힝..ㅠ.ㅠ * 그외 : 상협이한테 줘서 테스트 해봤는데요. 처음엔 잘되다가 중간부터 공이 잔상이 생긴다네요. 그리고 상민이형 왈, 오래 놔두면 너네 집에서도 뻗을거야 라는 말씀에 한시간 동안 틀어놔봤거든요. 별다른 변화를 못 느끼겠어여--; 도대체 어떻게 잡을지..ㅠ.ㅠ
  • 이상한 점3 : 내껀 cpu 점유율이 장난이 아니더라고여.. 배경 비트맵 큰 거 가지고 이렇게 될것 같지는 않은데.. 혜영이누나랑 선호꺼는 점유율 1-3정돈데.. 제껀 젤 높게 갔을때가 70오버더라고여..--;; 어떻게 된일인지..
  • 삽질중 : GetDC()만 쓰면 프로그램이 뻗어 버린다. 왜 그럴까..

  • 느낀 점 : 역시 난 아직 걸음마를 익힌 단계에 불과한 넘이다. 이런 허접한걸 프로그램이라고 만들어 놓고 좋아하다니..--; 앞으로 더욱 열심히 매진을! 메모리 엄청 새고.. DC에 대해 더 공부를 해야 하는 걸까..

  • 느낀 점2 : 다시 짤래 -.-

  • from 느낀 점2 네번째 다시 짜기
    1월 23일 밤-1월 24일 새벽 - 다시 짜서 완성..--;
    일단은 멀티 타이머 1까지 먹히는 걸로 봐서 98에서도 돌아갈 거라고 짐작됨..--;
    고친점 : 별로 없다. 비트맵을 멤버 변수로 넣었다.

  • 밤 새서 다시짰음.. 이번에도 안되면 난 몰라-.-

  • 지금 돌려서 테스트중...(xp 됨.98 안됨--;(실행하면 잘못된 연산 에러남),2000됨,me됨)

  • 결론 : (멋대로) xp에서 짠거랑 98에서 짠거랑 호환이 안된다?--;
    근거 : 벌써 4번째 다시 짠건데 98에서는 타이머가 제대로 안먹히거나 뭔가 안좋은 상황이 계속 발생됨
    여름방학때 98에서 짠 지뢰찾기를 xp에서 돌려보니 그림이 막 이상한데에 그려진다.
    고로 앞으로는 98 따위는 신경 안쓰기로 했다
  • 아쉬운점 : 1,2번째는 너무 대충 짰고, 3번째는 정말 정성 들여서 내가 생각하고 있는 OOP는 다 지켰고
    정말 열심히 짰는데 거의 다 됐을 무렵 멀티미디어 타이머란 복병이 플밍을 말리게 했다. 결국
    리소스 다 새고 바 안 움직이고 공 버벅거리는 등등.. 굉장히 더러워졌다. 그래도 난 이걸 평생
    가지고 있을 거다. OOP라는 것(내 멋대로긴 하지만..--;)을 최초로 지켜본 소스기 때문에..^^;
    마지막 작품이 될 4번째. 3번째로 끝낼까 했지만.. 역시나 미완성은 맘에 안들기 때문에 열받는
    걸 무릅쓰고 다 다시 짰다. 밤 새서 짜다보니까 혈압 오르고.. 짜증나는 바람에 oop고 뭐고 없다.
    일단 클래스 별로 다 분류하긴 했지만.. 개별 멤버에 접근하려니까(3번째에서는 몽땅 리턴하는
    함수를 마니 만들었었다.) 함수 만들기도 짜증나고 해서.. 다 프렌트 클래스로 넣어 버렸다. 좀
    아쉽다. 4번째것이 겉모습은 꽤 잘되었다고 생각되지만.. 3번째것보다 정이 안가는건 왜일까

4.3. 혜영 : 물푸 - 벽돌깨기

  • 진행상황
    • 1월 2일 : 메뉴 만들기
      Option으로 Ball Size, Paddle Size, Ball Speed를 사용자가 선택하도록 하기 위해서 필요. Ball Size는 11,13,15 Pixel 중에서 하나를 선택해야 함 - 중복 선택할 수 없도록하기 위한 처리..--;나중에 보니 1학기때 실습예제로 있었는데 몰라서 한참을 삽질) 그리고 게임중일때는 Option메뉴를 선택할 수 없도록 하기 위한 처리까지 했다.
    • 1월 3일 : 비트맵완성..;
      비록 공은 다른 곳에서 캡쳐해오기도 했지만, 예쁘지는 않지만 비트맵을 다 만들었네요..
      ; 괜히 포토샵으로 삽질 한 것 같기도 하지만 그래도 뿌듯..--;
    • 1월 7일 : Define 상수 결정, Stage 1의 블럭 초기화, 바의 움직임(키보드 or 마우스)
    • 1월 8일 : 마우스 커서 안보이게 하기, Stage2, Stage3의 블럭초기화
    • 1월 10~11일 : 공움직이게 하기, 벽돌깨지기, 검은 벽돌은 두번 닿아야 깨지도록 하기
    • 1월 12~13일 : 멀티미디어 타이머 사용. 3번의 기회가 주어지고 3번 다 죽으면 게임 끝. (게임 끝 처리)
      Stage가 증가하면 벽돌을 하나 당 깼을때 점수 증가 & 공의 속도 20%증가
    • 1월 14일 : 공이 떨어지는 각도를 랜덤함수를 사용해서 일정하지 않도록 함, Stage 4, 5 그림
      • 마스크가 안되는 이유를 알았습니다..; 비트맵을 바꿔서 그렸더군요..; 마스크..에서 검은공에 흰배경인데 저는 흰공에 검은 배경으로 ..; 휴우~ --; 왠 삽질이래..;
      • 흐음..; 절대좌표랄까.. 그걸로 바를 움직였더니 마우스 냅두고 키보드로 움직이면 바가 이상하게 움직임..; 그래서 지금 메뉴에서 처음부터 무엇을 쓸것인지 물어보는 것을 둘까 생각중.. 같이 사용은...아아.. 생각하기 싫다..--;
  • 알게된 것
    • 메뉴에서의 처리 - CView기반과 Dialog기반에서의 메뉴는 다르다..--;
    • SetCursor()사용하기, WM_SETCURSOR메시지
    • 멀티미디어 타이머 사용법. 비록 다른 사람 소스를 그대로 따라하긴 했지만..--;

4.4. 상협 : 상협 - 오목

  • 진행 상황
    • 1월 6일 - 현재까지 2인용, 33처리는 완성, 1인용 인공지능 방어는 완성, 공격은 일부 완성
      LT를 갔다온 관계로 2,3일 정도 손을 못 댔습니다.
      구체적으로 공격은 컴퓨터가 2->3개 놓는거와 3->4개 놓는거는 되는데 4->5개 놓는게 이상하게도
      잘 되지 않더라구여.
      현재는 계속 TRACE 구문을 이용해서 어디서 잘못되었는지를 찾고 있습니다.
    • 1월 8일 - 인공지능 오목 기초 완성, 앞으로 보강할일들
      • 상대가 한칸 띈 공격을 할때의 방어
      • 자신도 한칸 띈 공격을 하게 만들기
      • 0,0 좌표에 아주 가끔 돌이 놓아지는 기현상의 버그 수정
    • 1월 9일 - 대망의 띈 2->3 방어와 띈 3->4 방어 완결 및 띈 2->3 공격 띈3->4 공격 완성, 컴퓨터 상당히 똑똑해짐. 이제 앞으로 또 보강할일
      • 가끔 생기는 버그 수정 및 사람도 손쉽게 이길정도의 지능 보강.
    • 1월 10일 - 인공지능 또 다시 보강 - 3을 막을경우에 3,4가 되지 않게 막기(띈 경우 붙은 경우 모두) 앞으로 할일
      • 띈 3,3 방어
      • 3,4 공격 방어
      • 띈 3,3 공격 및 3,4 공격
      • 가장자리 버그 해결
    • 1월 12일 - 인공지능 보강한것들
      • 띈 3 방어 및 가장자리 버그 해결
      • 예전에 두었던것들 기억(공격할것 이나 방어할것들)
      • 3,4 방어 일부 완성, 진행중
      • 띈 3 이나 띈 4 일 경우 공격가능
    • 1월 14일 - 13일 일요일에 석천이형의 조언에 따라 코드 전체적으로 대대적인 Refactoring(이 용어가 맞는지는 모르겠네여..^^;;)을 해서 할수 있는 한 많은 코드들을 함수로 만들었습니다. 이에 따라 라인수가 아주 많이 줄어들게 되었고, 공격과 방어 인공지능을 같은 함수로 동작하게 하여 방어 할 수 있는 패턴은 모두 컴퓨터 공격할 수 있게 하였습니다.(덕분에 코드를 체계적으로 만들때는 상당히 힘들었지만, 한번 그렇게 하니 작업이 훨씬 쉬어 졌습니다. 참으로 중용한 사실을 몸소 체험 한거 같습니다) 3,4 방어 및 공격 인공 지능을 추가 했습니다. 이제 사람을 이길 확률이 좀더 높아 졌지만, 아직도 부족한것 같고 띈 3,3 방어 및 공격과 효율적인 3 만들기를 추가할 예정입니다.
    • 1월 19일 - 그동안 여러가지 일들이 있어서..(01 엠티, 자바 스터디 등등..) 한동안 못하다가 오늘에서야 몇가지 일들을 했습니다. 한일들
      • 가장자리를 판같이 보이도록 했습니다. (지금까지는 판같이 안 보였는데 ㅡㅡ;;)
      • 가장자리에 놓을시에 발생하는 버그들 해결
      • 예전에 놓았던 돌 무한 기억 + leve3 공격까지(2->3개 만드는 레벨) 기억하게 함(지금까지는 예전거 한번만이었지만...)
      • 34공격및 방어에서 발생했던 사소한 버그 해결
      • 지금까지는 2개 만드는것에는 신경을 안썼지만, 이번에 효율적으로 2개를 만들어서 나중에 훌륭한(?) 공격을 할 발판이 되도록 하였음.
      • 앞으로 더 할일(level3 공격 함수화, 띈 3,3 공격및 방어, 오목 알고리즘 문서화)
  • 1월 21일 - 이제는 버그 찾기가 힘들어져 가고 있음..그래도 버그는 여전히 존재
    • 오목 문서화 조금 진행
    • level3공격의 함수화
    • 베타 테스트(ㅡㅡ;; 결과는...사람과 약간 만만한 수준..)
    • 또 아주 가끔 생기는 버그들 수정 및 띈 3,3 공격및 방어 함수 작성시도..(아직 달성 못함)
    • 효율적인 2개 만들기 업그레이드
    • 앞으로 더 할일 - 오목 알고리즘 문서화 및 띈 3,3 공격과 방어 함수 작성
  • 1월 26일 - 오래 간만에 오목에 손을 댔습니다. 띈 3,3 공격과 방어 알고리즘은 잠깐 사이에 퍼뜩 생각 해냈는데 그걸 구현하는 동안에 버그때문에 많은 시간을 잡아 먹었음.
    • 띈 3,3 방어 및 공격(인공지능중 마지막 최후의 지능...강력한 기능...)
    • 컴퓨터가 너무 빨리 둔다는 의견이 있어서 잠시 생각하는 것 처럼 보이도록 함.
    • 앞으로 할일 - 자잘한 처리들과 띈 3,3 과 컴퓨터의 시간지연을 옵션으로 넣는것.(시간 나면 네트워크도...)
    • 1월 30일 - 자잘한 처리 끝. + 연속 공격(3개 만드는 공격을 연속으로)추가..(1.3배 정도 똑똑해진거 같음..)


  • 기타 느낀점
    • 지금까지 - 코드가 너무 길어지다 보니, 도데체 뭐가 잘못된건지 점점 헷갈려지네여..ㅠㅜ쉽게 해결될줄 알았는데, 정말 코드가 점점 엉망이 되어가는 듯한 느낌이..또한번 벽에 부딪히네여...후유...
    • 1월 8일 - 정말 아주 오래동안 생각하고 고치려고 했던 버그를 수정하니 날아갈듯 하네여~~^^
    • 1월 9일 - 오예 이제 사람도 이길 가능성이 있다 곧있으면 완성할 수 있겠다~~ 얏호~
    • 1월 12일 - 와우.. 완성의 날도 머지 않은듯..
    • 1월 19일 - 점점 사람이 쉽게 이기긴 어려운 오목이 되어가고 있습니다~~앗싸..~ 이제 곧 저도 못이길 오목의 탄생도 머지 않은듯...
    • 1월 21일 - 제가 짠 오목 인공지능이 사람을 이길때 느끼는 희열은 정말 말로 표현할 수 없을정도. 너무 기쁘져.. 특히 요사이 인공지능이 좀 좋아져서 이기는 경우가 많아져서 기쁨을 느끼는 경우도 더 많아져서 살맛남.
    • 1월 27일 - 컴퓨터가 한층 똑똑해져서 너무 기쁨...
    • 1월 29일 - 이제는 그냥 가끔 심심하면 오목 손대는데, 한번 다른 사람이 짠 오목 인공지능은 과연 어떨까 하는 궁금증이 생겨서 데브피아에서 인공지능 되는 오목이 하나 있길래 다운 받아서 해보니..인공지능이 상당히 좋던데여..은근히 제가 짠 오목보다 못하기를 바랬는데.. (막는 기능은 제것과 비슷하게 작동하는거 같은데.. 흠.. 더 컴이 승리할 확률이 이상하게 높더라구여..ㅡㅡ;)그거 보고 조금 기죽었음.. ㅡㅡ;; 그 소스 보고 더 기죽었음....소스가 상당히 짧고..깨끗하고.. 아무래도 나중에 제가 짠 오목 소스 손질좀 해야 할듯...

4.5. 창섭 : 창섭 - 오목

  • 진행 상황
    • 이전까지 - C++ 가상함수, 상속에 대한 개념을 공부하고 윈도우에서 그림그리는 원리를 알았습니다. ㅜ.ㅜ
    • 1월 6일 - 돌을 찍었습니다. 근데 창을 가리고 다시 복원이 안 되네요... 지금 계속 공부하는 중입니다.-_-
    • 1월 11일 4시현재 - 삼일동안 손을 뗐다가(다른 사정으로..) 이제 막 래스터 연산으로 돌만 골라서 찍는 거 했습니다. 근데 여전히 창 복원이 안 되는군요.-_-;;
    • 1월 12일 7시 22분 현재 - 창 복원은 아직 안 됩니다. 자석효과(돌이 격자에만 찍히게 하는 것)까지 구현했습니다.
    • 1월 13일 1시 40분 현재 - 화면 복원 되고, 2인용 오목 완성입니다. -,.- 근데 6목이 안 잡히네요. -_-
    • 1월 15일 5시 52분 현재 - 새 게임, 종료 기능 추가했습니다. -_-;; -> 모임 끝나고 와서 한 일..^^;;
    • 1월 21일 새벽 1시 현재 - 정상적인 사용자 인터페이스 구성을 끝내고 육목 막았습니다. 3 * 3 만 막으면 이제 인공지능으로 들어가야겠습니다. AI 설계는 뼈대만 잡은 상태입니다.

  • 현재까지 느낀점
    • 이전에 C 로 짰던 것은 오목을 검사하는 방법에 헛점이 있었습니다. 그래서 그것대로만 하려다가 지나치게 시간을 끈 것 같습니다.
    • 정말 아직도 허접을 벗어나지 못하고 있군요. 빨리 해야죠. =.=
    • 코딩할 때 오타를 없애는 것이 얼마나 중요한지 매일 깨닫습니다. -_-
    • 멤버 변수의 중요성을 깨닫고 있습니다. 참 유용하게 쓰입니다. -.-

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:41
Processing time 0.0394 sec