달력

42026  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

좀 의욕을 가지고 글을 적을만 하니 갑작스럽게도 바쁘게 되었다.

 

쉽지않다. 하지만 할 수는 있다.

 

게시판은 기본적으로 미리 계산되어진 것을 보여주는 시스템들이다.

예를 들어

원글에 댓글이 3개 달려있다면 원글의 특정필드에 3을 넣어놓지 그때마다 3개인지 count하지 않는다는 이야기다.

전체 리스트가 미리 나올수 있도록 구조를 계산해 놓는다는 이야기다.

많은 실패를 거듭하다가 그누보드의 구조를 버리기로 결정했다.

이것은 결국 다시 원점으로 돌아가는 이야기다.

중구난방이란게 지금의 프로젝트도 마찬가지구나. 하여간

게시판의 로직을 태오사이트의 로직으로 처리하기로 결정

http://taeyo.net/Columns/View.aspx?SEQ=100&PSEQ=9&IDX=0

그러나 2번째 글을 보니 댓글의 순서가 맘에 안든다. 이건 업데이트를 먼저하고 인서트를 하도록 결정 그러면 원하는데로 나올것으로 추정?

앞서 너무 삽질을 하는 덕분에 구현에 따른 순서가 너무 두서가 없다는것을 깨달았다만 그것을 바로 잡을 방법을 생각하지 못한다.

 

일단은 가볍게 순서를 정해보자. 이렇게 되지 않더라도 순서는 존재해야 되는것이 아닐까?

  • 1. 글 적기에 대해서 처리
  • 2. 적은 글을 html로 보는것을 처리
  • 3. 적은 글의 수정이 가능하도록 edit처리
  • 4. 글의 삭제가 처리되도록 할것
  • 5. 적은 글의 find처리
  • 6. 리스트의 paging 처리

오늘은 글 적기의 기본형태를 처리해 보자.

 

-------------------------------------------

프로젝트를 한다는것은 역시 일정이 중요하다.

하지만 혼자서 프로젝트를 진행하고.. 게다가 직장인 , 집안일, 모임에 따른 각종 일들 까지 다 하면서

이렇게 뭔가를 만든다는것 게다가 새로운 기술이 계속 나오고

 

그래 본론을 이야기 해서 갑작스럽게 Ibatis를 가지고 내부 접근을 변경해 버렸다. ibatis는 상당히 쉬우면서도 mvc와 잘 매칭되는 프레임웍이다.

Ibatis.net을 사용하면 되는데 문제는 이녀석은 datatable을 지원하지 않는다. 뭐 상관은 없을듯..

그래서 Mybatis.net을 가지고 처리를 하니 이녀석은 있다. 그러나 아직은 좀 아직 다운듯..

결국 3일을 잡다하게 가지고 놀다가..(5분이면 되는데 왜 3일이냐 걸렸냐?면.. 당연히 퇴근이후에 뭔가 한다는게 5분하고 바로 자야 내일 출근을 하니까 말이다.)

 

ibatis.net을 여기에 맵핑 시켰다.

 

결론은 말이다. 정말.. 소스도 중구난방이 되어가고 있다 이렇게 구현 저렇게 구현한. 소스가 더덕더덕..

 

시행착오가 많다. 아마도.. 빨리 버전 2를 만들어야 할려나? 얼른.. 진행부터 하자.

 

하여간 지금은 누더기 소스를 계속 지속하는수 밖에 EF도 그래도 ibatis를 넣고 그리고 새로만든 db처리도.. 결국 db에 대한 프레임웍이 3개나 되어버렷다.

이런 조그만 소스에.. 하나씩 걷어내고 최종적으로는 ibatis를 사용하리라..

 

ibatis의 문제는 맵핑처리에서 대소문자를 구별한다는것이다. 이말은 내가 쿼리를 만들어서 실행하면 그 퀴리의 결과값

 

image  대소문자를 보고 맵핑한다는것이다.

 

쿼리를 만들어야 되는것도 신중해야 된다는 소리다. 이것에 대한 옵션이 있는가 찾아봤는데 없다.

여하튼 결국 그냥 클래스에 있는 명칭을 다 소문자로 통일 시켰다 일단은..

 

이것때문에 또 여러가지로 중구난방의 소스가 되어간다.

 

아무래도 이 문서는 그냥 나 혼자 읽기용 문서가 되어야지.. 외부에 사람이 읽어서는 당최 무슨 이야기 인지 이해하기 힘들것 같다.

너무 삽질을 많이 하네.

 

 

 

 

 

ps)

EF를 포기한 이유들

1. 리스트를 보여줄때 content까지 쿼리되는게 싫다.

2. 동적테이블, 동적인 형태의 작성이 편법은 존재하지만 현재로서는 어렵다고 보여진다.

 

ps2) 파일 업로드

http://www.uploadify.com/

vNext의 deploy

http://weblogs.asp.net/imranbaloch/aspnet-vnext-folder-structure

Posted by 삶의여유로움
|

자 일단은 초기 입력화면을 다듬어야 한다.

저장버튼을 눌러도 당연히 저장이 안되고 기본적인 인자값을 안쪽에 채워줘야 할것이다.

웹의 개념을 모르다 보니 조금씩 힘들긴 하다.

sample을 보면서 개념을 깨우친다.(아래 갭쳐는 ms에서 제공한 CU10으로 되어 있는 샘플)

clip_image001

 

일단 ViewBag이란 녀석을 보니 danamic이다. 즉 무엇이던지 넘길수 있는 형태다.

다이나믹을 이렇게 이용하다니 참 기발하다.

개인적으로 언어의 발전에서 danamic이나 roslyn같은게 나오나 했는데 그것을 사용하는 asp팀의 개발형태들을 보면 이거 웹 때문에 나왔나 싶을정도이다.

자 앞에 Bind형태로 인자값이 오는것은 아직 이해를 못하겠다.

 

아마도 명시적으로 저 개체에 정확하게 바인딩을 시켜주기 위한것으로 이해한다.

clip_image002

 

 

입력화면을 디자인 해보니 두개의 메서드가 있다.

첫번째는 입력을 위한 화면이고 두번째는 입력시에 저장 버튼을 누를때의 경우이다.

ViewBag과 행여나 하는 마음으로 개체를 넘기니 그 개체의 값이 표현이 된다.

clip_image003

 

아 이렇게 하는것이구나. 즉 컨트롤에서 값을 넘기는 법과 화면에서 값을 넘기는 법

그것에 대한 이해를 했다.

 

별거 아니구나. 그럼 결국 그냥 입력만 받으면 되는 상황이 되어 버렸다.

하지만 멀티게시판이란게 그리 쉽지는 않은것이라.

단일한경우는 이렇게 입력이 된다고 한들 멀티는 어떻게 하지?

예를 들어서 각각의 게시판 테이블이 고정적이라면 그렇다면 문제가 없겠지만 게시판 이름과 테이블은 동적이다. 물론 네이버처럼 하나의 테이블에 다가 모두넣고 처리하는것도 좋을것 같다.

어떤방식을 선택하는가에 따라 앞으로의 방향이 달라진다.

하지만 우리는 어떤가? 프로토타입이 아닌가? 상업용도 아니고 편하게 그냥 공부하는것이니 기존의 방식을 따라서 해보자.

기존의 그누보드의 소스를 살짝보니

clip_image004

 

이런방식이다. 들어가야 되는 테이블에 받는 명칭을 넣고 있다.

clip_image005

 

우리는 EF를 사용하고 있고 문제는 이렇게 되지 않는다.

결국은 ? 어떻게 해야될것인가?

샘플은 주로

clip_image006

 

이런방식의 Repository방식을 사용한다.

그러니까 내가 생각하기에는 일단은 나도 가벼운 Repository형태로 클래스를 만들어서

내부에서 멀티테이블을 처리하도록 코딩을 하기로 결정했다.

문제는 EF에서는 동적인 테이블을 처리할수는 없다는 것이다.

이것을 이용하기 위한 편법은

1. DB의 sp를 이용해서 동적쿼리를 이용하거나

2. 리플렉션으로 table의 이름을 변경

3. Context에서 보여지는 쿼리를 가지고 쿼리를 추출후에 테이블 명을 변경

4. IDbCommandInterceptor를 구현해서 쿼리를 인터셉해서 실행되기 전에 테이블명을 변경

의 형태가 있으며

 

노가다 형태로 표준 보드테이블을 만든다음에 상속받는 클래스를 수작업으로 만들어서

동적으로 처리하도록 하는 방법도 있다. 문제는 이방식은 사용자가 할수 없고 프로그래머가 해야된다는게 문제다.

또는 그냥 상상속의 나래에서 펼치는 방법은 vNext의 경우 스크립트 방식이므로 그냥 소스에 클래스를 동적으로 만들면 테이블과 1:1대응하도록도 가능할듯 싶다.

마지막으로 가장 확실한 방법인 Sql의 직접실행이 있는데 두말할 나위없이 최고의 방법이며 또한 가장 별탈없는 방법이긴 하지만 하나에서 열까지 노가다가 필요하며, 쿼리 다 만들어 둬야 하고

 

구조를 변경시에 쿼리 따라가며 변경해야 된다는게 단점이다. 그럼에도 최고의 방법이라고 생각된다.

결국은 여러 번의 실패를 거듭하다가, SQL 방식으로 하기로 결정 그리고 다시 vNext로 돌아가기로 했다.

그냥 최신버전이라는 이유만으로? 또는 로슬린때문에.

게시판 만들기 위한 선택 자체만으로도 삽질을 3일간 했다.

 

하지만.. 결국 vNext에서 다시 MVC4로 돌아갔다.

초반 삽질이란 역쉬 쉬운게 아니다.

 

 

 

ps) 참고

1. EF의 실행시의 로그를 남기는 방법

http://msdn.microsoft.com/en-US/data/dn469464

http://msdn.microsoft.com/en-us/data/jj592907.aspx

Posted by 삶의여유로움
|

자 게시판을 만든다는게 쉽지만은 않다.

그래도 하고 있는중이다. 스스로를 위로해 보자.

조엘온의 소프트웨어 스케줄은

http://korean.joelonsoftware.com/Articles/PainlessSoftwareSchedules.html

이런 방식이다.

 

이것을 새로운 증거기반 스케줄링형태로 다시 적어둔글..

http://www.joelonsoftware.com/items/2007/10/26.html

자 일단은 옛날방식이긴 하지만 이것을 이용해 보기로 하자.

clip_image001

 

대략의 리스트를 작성하면서 짜고 만들고 짜고 만들고를 진행하자.

전체의 일정을 나도 모를뿐더러 왜냐면 앞서 이야기 했듯이 난 게시판을 처음 만들어 보니 기능의 전체를 모른다.

그리고 위의 엑셀파일을

매일 저녁 6시 이후에 업데이트 하는것으로 했다. 오전에 하는것은 또한 말이 되지 않으니까.

글로만 모든걸 설명하기는 힘드니 약간의 이미지를 조금씩 넣어보자.

그냥 모르면 최신거?인가? 하여간 최신버전으로 하려고 생각을 했다.

clip_image002

 

vNext를 이용해 보려고 시도했으나.

지금의 프로그램은 vs2014버전 ctp인데.

로슬린을 이용하여 코드를 컴파일 하지 않아도 된다. 즉 PHP처럼 스크립트를 수정하면 바로 적용이 되는 시스템이다.

http://www.asp.net/vnext/overview/aspnet-vnext/getting-started-with-aspnet-vnext-and-visual-studio

clip_image003

 

(중간수정 : 여러 번 테스트 결과 PHP같은것은 아니다. 왜냐면 관계가 없는 파일을 수정하게 되더라도 내부적으로 다시 로딩을 처리하고 설사 소스와 전혀무관한 그냥 txt파일을 아무폴더에 만들더라도 다시 로딩을 한다. 이것은 실제적으로 로직의 구현의 장애가 될수도 있다. ex - 자료실 같은 경우

CTP버전의 미완성에 대해서는 아직 이야기 하기 힘들듯 , EF7도 임시방편만 해둔듯 보여진다.)

또한 문제가 발생했는데 Deploy가 문제였다. 셀프 호스팅을 처리하기도 에매하고 현재로선 IIS를 진행해야 하니 말이다. 역시 많은 문제점들이 해결해 나가기에는 커뮤니티가 필요한데 미흡하다.

 

맘에 들지만 일단의 내수준으로 처리에는 무리가 있다는것을 알겠다.

최소한 정식 vs2014가 나올때에 처리해야지만 커뮤니티에서 어려운것들을 해결할것인데 아직은 EF7부터가 mssql에 붙이니 문제가 있다.(ms-sql2008) 물론 내가 잘 못 한것이겠지만 이전버전과 다른 형태의 코딩이 필요하도록 변경이 이루어진것을 찾아서 수정처리하기에는 만만치 않았다. 일단은 커뮤니티 자체가 활발하진 않으니 조금 안정된 버전으로 진행하기로 했다.

그래서 방향을.. MVC4로 진행하기로 결정하고..

http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/building-the-ef5-mvc4-chapter-downloads

이 사이트에서 투토리얼과 샘플을 찾았다.

 

실 다운은. 여기..

https://code.msdn.microsoft.com/Getting-Started-with-dd0e2ed8

asp.net MVC의 경우에 EF의 사용이 필수가 되는것 같다. 그래서 기본적으로 EF의 사용법을 대략적으로 알고 있는것을 추천한다.(당연히 Linq도)

자 일단 모델을 뽑자. 이쁜모델로 물론 저기 그누보드의 모델을 그대로 답습하는 것이겠지만 말이다. 이 프로젝트는 프로토 타입이니 많은걸 기대하지 말자.

되도록 마이그레이션이 가능한 구조이면 좋겠고 추후 변경을 취할수도 있을것 같다.

대충 테이블 구조를 만들고

image

 

그누보드의 구조를 이용하려고 고민을 했지만 TaeYo의 방식을 이용하기로 맘을 변경했다. 개인적인 몇가지 형태들의 로직을 넣고 변경을 추가 하기 위해서

마음대로 변경이 가능한 형태를 찾았기 때문이다.

하여간 그래서 약간의 컬럼 변경을 처리했다.

 

 

 

ps) 개인적인 여담으로

vNext는 정말 다음을 위한 포석이라 좋긴하다만 아직은 미완성이다. 정식버전에는 최소한 로딩을 위한 감지역영의 제한 정도는 기능이 추가되리라 생각된다.

 

ps2) 참고

ef7에 대한 글 읽어보기

https://github.com/aspnet/EntityFramework/wiki/Using-EF7-in-Traditional-.NET-Applications

vNext의 샘플 MusicStore

https://github.com/aspnet/MusicStore

행여나 기초가 부족하신분은 태오사이트에 번역본을 보자.

http://taeyo.net/columns/List.aspx?SEQ=35&IDX=0

Posted by 삶의여유로움
|