Whiteship's Note

'Anyframe shit'에 해당되는 글 1건

  1. 2008.07.17 Anyframe 보다가 흥분 해버렸네요. (11)

Anyframe 보다가 흥분 해버렸네요.

모하니?/Thinking : 2008.07.17 16:31


"Devil's Advocate 엔딩곡"

Why did you just copy and paste another souce code? This is an unnessecary work. Just make a reference of that class. Isn't it a duplication?

=> 왜 다른 소스코드를 복사해서 붙여넣으셨나요? 그냥 레퍼런스 변수 하나 만들면 될 뿐인데요. 중복 아닌가?

증거? anyframe.common.util.AnyFrameProperties 클래스에 있는 주석과 org.apache.commons.configuration.PropertiesConfiguration 클래스에 있는 주석이 일치합니다. 이상하게 주석이 영문 API 스럽게 달려있는 걸보고 혹시나 해서 검색해 봤더니 구글이 바로 알려줍니다.

복사해서 붙여 넣을 꺼면 그냥 참조하면 되는데, 왜 굳이 AnyFrame 이름을 달려고 한건지 이해가 안 되네요~ @.@ 이건 중복이자나요. 중복.

Why are you using static logger? static logger can cause some serious problems on multithreading server platforms. Have you ever seen this article?
=>왜 static 로거를 사용하셨나요? static 로거는 멀티쓰레드 기반 서버 플랫폼(톰캣을 비롯한 대부분의 WAS)에서 static 로거는 자칠 심각한 문제들을 발생시킬 수 있습니다. 이 글을 본적 없으신가요?

로거들을 전부 static 으로 쓰고 있는데, 그럴 경우 멀티 쓰레드 기반으로 동작하는 서블릿 컨테이너들의 클래스로더 계층 구조 땜시 별에별 문제들이 발생할 수 있습니다. 그것과 관련해선 아래 글에 정리해둔 적이 있습니다. 스프링에서도 일부 static 로그를 사용하고 있지만, 테스트 용도로 debug 레벨의 로그만 남기는 정도 입니다. 하지만 애니프레임은 무분별하게 사용하고 있는것 같네요. 로거 객체에 별로 무관심 한 것 같습니다.

2008/05/09 - [Java] - Logging/StaticLog

What is your package organization strategy? I feel dizzy.
=> 패키지 구조 정책이 어떻게 되는겁니까? 어지럽습니다.

애니프레임 코어에도 anyframe.core.hiberante라는 패키지가 있고, 애니프레임 웹 프로젝트에도 똑같은 패키지가 있는데 애니프레임 웹 프로젝트에 갑자기 왠 DAO 코드가 있는건지 몰겠습니다. ICommonDAOHibernate라는 클래스가 웹 프로젝트에 있어야 하는건지.. 몰겠습니다. 애니프레임 코어에는 ICommonService라는 인터페이스가 anyframe.core.hiberante라는 패키지에 들어있던데 정말 어지러워 죽을 지경입니다.

Do you know Hibernate?
=> 하이버네이트를 알고 확장하신건가요?

하이버네이트를 알고 확장하신 건지 의문입니다. 왜 flush()를 모든 메소드에서 호출한 겁니까? 그러면 하이버네이트 세션 컨텍스트가 매번 DB와 싱크하기 때문에 하이버가 최대한 늦게(정말 싱크가 필요한 시점에) DB에 반영하는 특징을 전혀 살릴 수 없잖습니까? 저건 하이버네이트를 죽이는 일입니다. 저 코드를 개빈킹한테 보여주면 열받아서 코드를 찢어버릴지도 모릅니다. 개선이 필요합니다. 아니 그전에 하이버네이트를 좀 공부하신다음에 확장하시는게 어떨까요? 아니면 아예 하이버네이트는 지원하지 않으셨으면 합니다. 저런 식으로 하이버네이트를 오용하는 코드가 확산되면 오히려 괜한 오해만 사고 하이버네이트의 엘레강트 한 면모를 더럽힐 수 있으니까요.

Don't you know Spring MVC Interceptor?
=> Spring MVC의 interceptor를 모르시나요?

왜 AnyframeController에 preprocess()와 postprocess()라는게 있는지 의문입니다. 인터셉터로 할 수 있는 일을 굳이 전처리 후처리 메소드를 추가해야 했는지 몰겠네요. MAC랑 SFC를 합쳐서 AnyFrameController를 만드실 정도로, Spring MVC를 공부하셨다면 인터셉터 정돈 알고 계시지 않나요?? 그리고 해당 클래스의 테스트 코드들은 직접 작성 하신 겁니까? 아니면 스프링 코드에 있는 테스트 코드를 붙여 넣은 겁니까? 더 이상 확인해보고 싶지 않아서 손을 안 댔지만, 혹시 붙여 넣은 거라면 뭔가 좀 문제 있는거 아닐까요? 아무리 오픈소스고 테스트 코드라고 하지만 양심적으로 피쳐링 수준이 아니라 표절 수준이 되면 문제라고 생각이 되는데요;




이밖에도 계속하고 싶지만, 더 이상 코드를 봤다가는 이성을 잃어버릴 것 같아서 못 보겠습니다.
top

  1. Favicon of http://benelog.egloos.com BlogIcon benelog 2008.07.17 23:39 PERM. MOD/DEL REPLY

    저도 볼려다가 아직 못 보고 있었는데 우려했던 상황들이 벌어지고 있는것 같네요;

    preprocess와 postprocess 메소드는 struts 기반의 구버전에 있었던 코드를 그냥 옮기어 온 것으로 보입니다.. 뭐 스트럿츠에서도 더 좋은 방법이 있었을 것 같기도 합니다..

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.17 23:58 신고 PERM MOD/DEL

    다행이시네요. 절대로 보지 마세요. 저는 본 걸 너무 많이 후회하고 있습니다. 판도라 상자를 열어본 기분입니다. 수 많은 부정적인 생각들이 머리를 채워주더군요.

    지금은 그냥 라디오헤드 노래나 들으면서 머리를 식히고 싶을 뿐입니다.

  2. keunseok 2008.07.18 09:37 PERM. MOD/DEL REPLY

    이번 플젝 1차 때는 스프링 기반으로 했는데, 2차는 삼성이 주사업자인 관계로 애니프레임을 쓰게 될 것 같은데, 큰일이네. (그런 사실 때문에 플젝 초기부터 의욕 엄청 떨어졌음)
    워낙에 소스 코드 들여다 보는걸 좋아하지는 않지만, 애니 프레임 문제가 심각한가 보네. 하긴, 그대로 베꼈을 것이라는 추측은 많이 했지만서두...
    역시 삼성이 하면 뭔가 다른가보다. 아침부터 욕 나오고 혈압 오른네

    Favicon of https://springframework.tistory.com BlogIcon 영회 2008.07.19 12:16 신고 PERM MOD/DEL

    꼭 그렇지만은 않아. 애니프레임을 더 자세히 봤다면.. ^^
    아마도 기존에 SDS가 갖고 있던 유산인 시스테미어를 완전히 걷어낼 수는 없었던 것으로 추정되는데 그건 내가 모르는 일이고
    확실한건 굳이 Web-tier를 Struts 기반으로 만들어야 하는 것은 아니니까.
    그렇게 되면 애니프레임이기 보단 스프링을 그냥 쓰는 것이 되겠지만.. 애니프레임이 그걸 막는 것은 아니니까.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.19 19:48 신고 PERM MOD/DEL

    형.. 큰일이네요. 하이버네이트 위에 올린 그 클래스는 정말 쓰면 안 되요. 작명에도 일관성이 없고 패키징 구조가 엉망이어서 도대체 어떤 기준으로 core랑 web으로 묶은건지 알 수가 없어요. dao는 web 프로젝에 있고 service는 core에 있으니 이건 뭐;; -_-;;

  3. Favicon of https://springframework.tistory.com BlogIcon 영회 2008.07.19 13:02 신고 PERM. MOD/DEL REPLY

    트랙백이 막혀있군

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.19 19:42 신고 PERM MOD/DEL

    앗? 그런가요? 흠.. 특별히 설정을 바꾼적이 없는뎅.
    다시 한 번 줘보시겠어요? Max님 트랙백은 잘 받았는데요.

  4. Favicon of http://www.ologist.co.kr BlogIcon ologist 2008.07.20 21:51 PERM. MOD/DEL REPLY

    공통으로 프레이워크를 만든다는거 레거시를 가지고 새로운 개념을 적용한다는 것은 쉬운일이 아니죠. 다른 것들은 SDS사정을 잘 모르니 그렇다 치고, PropertiesConfiguration라는 기존에 있던 코드를 카피해서 사용하고 그걸 공개하는 것은 좀 그렇네요...^^;

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.20 21:54 PERM MOD/DEL

    네 와 오랜만에 뵙네요. 복사 해서 붙여 놓은 코드는 그거 하나만이 아닌거 같아서 참 씁쓸합니다.ㅋㅋ

  5. bylee 2010.06.06 18:36 PERM. MOD/DEL REPLY

    anyframe에 대해 검색해서 글을 보다 여기 들렸습니다.

    본문중에 언급하신 log관련 글을 엄밀히 말해서 상관없는 내용입니다.( 클래스 로더 누수 문제 )

    좀 뜬금없는 글이라고 해야 할까.

    static을 쓴다고 발생하는 것도 아니고 private을 쓴다고 해서 안 발생하는 것도 아닙니다.

    아마 복잡한 구조를 설명하기 귀찮아서 쓰지 말라고 한 게 아닌가 싶습니다.

    글에서 설명한 문제가 발생하지 않게 하기 위해서는 Logger를 상위 클래스 로더에 로딩시키면 됩니다. 따라서 static logger를 썼냐 안썼냐는 중요하지 않습니다.

    Favicon of http://whiteship.me BlogIcon 기선 2010.06.06 21:49 PERM MOD/DEL

    그렇군요.

    흠.. 너무 오래되서 이미 해당사항이 없는 내용이 많은 글이 되버렸답니다.

Write a comment.