PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2014/10/25 14:44:31
Name 랜덤여신
Subject [일반] PGR21 오픈 소스 프로젝트를 소개합니다
PGR21은 제로보드 기반으로 만들어진 사이트입니다. 제로보드는 한 시대를 풍미한 게시판이지만, 2002년 이후로 업데이트가 이루어지지 않고 있기 때문에 지금 기준으로 보면 빈약한 부분이 많은 소프트웨어입니다.

이 부분은 개발자 분들만 이해하실 수 있는 내용이겠습니다만, 예컨대 제로보드는 HTML 요소를 숨기는 데 style="display: none;" 을 사용하지 않습니다. 대신 < img src="test.png" > 를 문자열 치환해서 < Zeroboard< img src="test.png" > 로 만듭니다. 이렇게 하면 브라우저가 인식할 수 없어서 안 보이게 된다는 거죠. 인터넷 익스플로러 6 시절 물건이다 보니 이런 꼼수가 무수히 많이 발견됩니다.

또한 제로보드가 기반하고 있는 데이터베이스는 MySQL의 MyISAM이라고 불리는 스토리지 엔진으로서, 데이터의 무결성을 유지하는 데 필수적인 트랜잭션(또는, ACID)을 지원하지 않습니다.


이러한 모든 문제점들은 사실 [결정적인 건 아닙니다.] 잘 아시겠지만, PGR21은 오랫동안 유지되어 왔으며, 제로보드에 결점이 있다고 하나 [그게 사이트 운영에 지장을 줄 정도는 결코 아니거든요.]

하지만 개발자로서, 비록 실력은 부족하지만, 저는 더 완전한 시스템을 만드는 데 큰 관심이 있습니다. 또한 PGR21의 한 사용자로서, 이 시스템을 개선하는 데 기여할 수 있다면 기분이 참 좋을 것 같습니다.


그리하여 저는, 제로보드를 대체하기 위한 새로운 PGR21 게시판을 만들기 시작했습니다. 원래는 PGR21 전용 게시판으로 만들려고 했습니다만, 욕심이 좀 커져서 범용 게시판으로 만들려고 합니다. 이름은 ['호무보드']라고 합니다. 다만 제 생각에, 이걸 공개해도 쓸 사람은 많지 않을 것 같습니다. 요즘은 개인 사이트 수요가 많이 줄었더군요...

또한 이 프로젝트는 [오픈 소스]입니다. PGR21 사용자 누구나 기여할 수 있습니다. 물론 코드에 기여하려면 개발 실력이 있어야겠지만, 코드 이외의 방법으로도 기여할 수 있는 방법이 있을 거라고 생각합니다.

깃허브 프로젝트 사이트: https://github.com/pgr21

현재 호무보드와 마이그레이터가 올라와 있습니다. 마이그레이터는 제로보드 4 데이터를 호무보드로 옮기기 위한 것인데, PGR21 데이터가 방대하다 보니 이것도 쉬운 일은 아니더군요.


아직 일반적인 게시판이 수행해야 할 기능조차 못 하고 있습니다만, 몇 가지 특별한 기능을 넣어 봤습니다.

* 자신이 쓴 글을 다른 게시판으로 자유롭게 옮길 수 있습니다. 글을 삭제하고 (또는 삭제당하고) 다시 올리면 댓글이 날아가기에 생각해 본 방식입니다. 단, 이 경우 글 쓴 시각이 현재 시각으로 변경되어 글 목록의 최상단에 나타나게 됩니다.
* ['관련 글 댓글화'] 기능이 있습니다. 어떤 글과 그 글의 모든 댓글이, 계층 댓글을 그대로 유지하면서 다른 글의 댓글이 됩니다. 이 기능은 포포리 님이 제안해 주신 것입니다. 관련 글 댓글화 규정을 적용할 때, 복사-붙여넣기는 깔끔하지 못하고 삭제 처리는 원글을 보존할 수 없다는 문제점이 있습니다. 이를 해결하기 위해 만들었습니다. 현재는 아무나 쓸 수 있지만, 나중에 운영자 기능으로 만들지 글쓴이 권한으로도 되게 만들지 결정해야 할 것입니다.


단, 아직 이 새로운 게시판이 공식적인 것은 아닙니다. 운영진 분들과 충분히 논의를 해 보고 기존 게시판을 대체할 수 있다고 판단될 때 반영될 것입니다.

감사합니다!

개발 중인 버전 보러 가기: http://newtype.pgr21.com/

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
레지엔
14/10/25 14:49
수정 아이콘
아 여기도 운밀레 공밀레 소리가...ㅠㅠ 수고하십니다.
미움의제국
14/10/25 14:50
수정 아이콘
우왕
피들스틱
14/10/25 14:52
수정 아이콘
오 훌륭하네요.
호무보드라는 이름이 인상적입니다.
랜덤여신
14/10/25 14:57
수정 아이콘
사실 이름 정하는 게 가장 어려웠습니다.

이름 후보들은 다음과 같았습니다:

쪽보드: 아시는 분은 아실... 공돌공돌해
카드보드: 구글만 쓰냐, 나도 쓰겠다
피지보드: 피지알 + 보드... 근데 피'쥐'보드라고 쓰는 사람들이 나타날까봐 걱정돼서 그만뒀습니다.
바로드: board의 애너그램, barod
원보드: '제로'보드를 대체하니까
호무보드: 마법 소녀 마도카 마기카의 등장 인물
pyBB: phpBB의 패러디. 파이선이니까 py

호무보드의 장점이 하나 더 있는데, 'homuboard'로 구글 검색했을 때 결과가 없다는 것입니다.
눈시BBand
14/10/25 20:44
수정 아이콘
아아 마지막 게 됐어야 했는데요 ㅠ.ㅠ
잠잘까
14/10/25 14:52
수정 아이콘
컴맹이라 도움드릴게 없군요. ㅠㅠ
개발 버전 말미에 쓰신 유머가 인상적이였습니다.
14/10/25 14:52
수정 아이콘
호무보드라니... 이름의 유래가 뭔가요? 크크크
사와시로미유키
14/10/25 14:55
수정 아이콘
호무라를 본딴게아닐까 추측되네요
다리기
14/10/25 14:54
수정 아이콘
무슨 말인지 모르겠으니 그냥 겁나 가만히 있어야겠다...
heatherangel
14/10/25 15:05
수정 아이콘
요즘 운게가 말이 아닙니다. 저 되게 열심히 가만 있는중.
저 신경쓰여요
14/10/25 14:55
수정 아이콘
호무보드... 혹시 호무호무한 호무라랑 연관이 있...지는 않겠지요 흐흐
14/10/25 14:55
수정 아이콘
정말 신경쓰이네요 크크크크
닭이아니라독수리
14/10/25 14:56
수정 아이콘
호무라가 참 호무호무하죠
저도 좋아합니다
에위니아
14/10/25 14:56
수정 아이콘
컴알못이라 내용은 모르겠지만 이름은 호무호무하네요.
14/10/25 15:00
수정 아이콘
오오 파이썬으로 만들고 있군요! 고생많으십니다^_ㅜ
iOS 개발자로서 시간이 나면 pgr21의 iOS 유니버셜 앱 버전을 오픈소스로 한번 만들어보고 싶긴 하네요.
하지만 맨날 생각만 하고 있다는게ㅠㅠㅠ
츄지Heart
14/10/25 15:05
수정 아이콘
와 고생 많으십니다. 사실 PGR21 은 어떻게 생긴 (기술적으로 뭘로 만들어졌고 운영되는지) 사이트일까... 궁금했었는데 그런 부분이 해결이 되어서 좋네요.

DB 도 다른 걸로 옮기게 되는 건가요? MariaDB 라던가요..
랜덤여신
14/10/25 16:40
수정 아이콘
네, PostgreSQL로 옮기게 됩니다. 파이선 하나로도 이미 마이너한데 데이터베이스까지 마이너해지네요. (..)
켈로그김
14/10/25 15:05
수정 아이콘
맷돌을 돌려라. 힘차게 돌려라.. 수고하십니다;;
김연우
14/10/25 15:05
수정 아이콘
파이썬이길레 장고면 좀 볼까, 했는데 flask군요. 프론트엔드는 잘 몰라서...
랜덤여신
14/10/25 16:50
수정 아이콘
장고 난이도가 TOP라면 플라스크는 커피입니다! 어렵지 않아요. 어차피 웹 프레임워크 그까짓거 (..)
스카리 빌파
14/10/25 15:19
수정 아이콘
다... 다이아몬드라니.
Outstanding
14/10/25 15:31
수정 아이콘
고생이 많으십니다.. 뭔진 모르지만 화이팅!
트릴비
14/10/25 15:35
수정 아이콘
아직 학교 다니던 시절에 알바로 이런 저런 게시판이니 커뮤니티니 하면서 CMS 아류들 만들때마다 할 일은 많고 시간은 너무 많이 걸려서 참 후달림을 많이 느꼈었는데.. 고생이 많으실 것 같습니다.
도움을 드리면 좋겠는데 파이썬이면 도움 드릴 수 있는 부분이 별로 없네요 크크
화이팅입니다
랜덤여신
14/10/25 16:40
수정 아이콘
파이선 무척 쉽습니다. 이참에 한번 배워보세요~
14/10/25 15:41
수정 아이콘
짧은 시간에 게시판 골격을 잘 잡으셨군요.
깃헙을 통해서 오픈소스화 하는 것도 저 같은 사람이 운영진 밖에서도 기여 할 수 있어서 좋은 것 같습니다.

다만 게시판 교체는 사용자 경험을 완전히 바꿔버릴 수 있기 때문에 피지알 멸망시나리오가 나올 수 있습니다. 그래서 준비를 충분히 한 뒤에 교체하면 좋을 것 같네요.

스무스하게 넘어가려면 2가지 방법이 있다고 생각되는데요.
첫번째 방법은 기존 게시판과 완전히 동일한 UI의 새 게시판을 작성하는 것입니다.
새 게시판 준비가 완료되면 일시에 마이그레이션 하여 이전하고, 그 이후에 원하는대로 기능수정을 하는 것이지요.

두번째 방법은 기존의 제로보드 DB를 그대로 사용하여 새 게시판을 개발하는 것입니다.
새 게시판을 베타로 오픈하여 계속 작업을 이어나간뒤 적당한 시점에 메인게시판으로 바꿔버리는 것이지요.
그 후에 DB도 손보구요.
피지알 클래식 스킨을 현재의 기본스킨인 새벽안개 스킨으로 바꾸는 작업이 이런식이었습니다.
하지만 DB구조에 게시판 개발도 영향을 많이 받을 수 밖에 없기 때문에 두번째 방안은 현실적으로는 어렵지 않을까 싶네요.

호무보드가 잘 진행되면 좋겠네요.
코드 기여는 게시판이 거의 완성되었다는 느낌이 들 때 쯤에 해볼 마음이 들 것 같습니다.
랜덤여신
14/10/25 16:45
수정 아이콘
저도 첫 번째 방법이 괜찮다고 생각합니다. 제로보드 데이터베이스를 그대로 쓰는 건 너무 괴로울 것 같아서요...

사실, 마이그레이터 만들면서 충격도 좀 먹었습니다. 제로보드가 트랜잭션, 외래 키, constraints 같은 걸 전혀 고려하지 않고 만들어졌다 보니, 데이터베이스 내용 자체에도 버그가 있더군요. (사실 그 시절 MySQL은 그런 거 지원 안 했으니 어쩔 수 없지만...)

대표적인 예가, 아이디가 같은 회원이 몇 명 존재합니다. (!) 아마 데이터베이스를 복원하면서 중복으로 들어간 것 같아요. 이런 문제도 UNIQUE 제약 조건을 걸었다면 발생하지 않았겠죠. 마이그레이션 진행하면서 오류가 나길래 보니까 아이디가 중복이더군요...

아무튼, 기여를 받을 수 있게 되면 좋겠군요. 열심히 만들겠습니다!
14/10/25 17:06
수정 아이콘
저도 첫번째 방법에서 (최대한) 동일한 UI를 유지한다는 부분이 지켜지면 좋을것 같습니다.
14/10/25 15:46
수정 아이콘
운영진이던 시절에 장고로 옮기려고 db스키마 만들고 마이그레이션하고 잠시 쉬던 도중에 운영진 짤려서 그냥 버렸는데 괜히 지웠네요
제로보드 구조가 그렇게 어려운건 아니라 마이그레이션은 금방 만드실거고 아마 프론트엔드에서 힘들지 않을지..
참여할수도 있지만 flask라서 굳이 새로운걸 배워가면서 하기는 여유가 부족해서.. 다른분들께 기회를 넘깁니다. 수고하세요!
랜덤여신
14/10/25 16:48
수정 아이콘
장고 난이도가 TOP라면 플라스크는 커피입니다! (?)

어차피 파이선이고 같은 웹 프레임워크고 하니 개념은 비슷한 것 같아요. 기회 되면 도와주세요!
스테비아
14/10/25 15:53
수정 아이콘
고생하십니다~! 그래도 다이아몬드는..크흠
그럼 이거 있으면 피지알 짝퉁 홈페이지를 만들어 요리조리 고쳐보고 할 수 있는건가요? 흐흐
랜덤여신
14/10/25 16:49
수정 아이콘
네. Reddit도 사이트를 만드는 데 쓰인 소프트웨어를 오픈 소스로 공개해서 누구나 Reddit 클론을 만들 수 있게 해 놨는데, 비슷한 느낌이라고 생각하시면 될 것 같습니다.
14/10/25 15:58
수정 아이콘
헐; 깃허브에서 pgr 를 보게 될줄은;
The Last of Us
14/10/25 16:31
수정 아이콘
문과는 가만히 있어야겠네요
王天君
14/10/25 17:04
수정 아이콘
문돌이는 물음표만 띄우고 있을 뿐
착한밥팅z
14/10/25 17:20
수정 아이콘
가만히는 문과 있어야겠다...
14/10/25 17:24
수정 아이콘
운영진 갈리는 소리가 여기까지 들리는구나....
Darwin4078
14/10/25 17:53
수정 아이콘
뭔말인지 모르겠지만 운영진 갈아서 만드는 거라는거는 알겠습니다. ㅠㅠ
앞으로 트래픽 잡아먹는 엄한 뻘글은 자제하겠습니다.
Jannaphile
14/10/25 18:11
수정 아이콘
진심으로 고맙습니다. 화이팅입니다!
곧내려갈게요
14/10/25 18:43
수정 아이콘
우와... 대단하십니다.
유리한
14/10/25 18:45
수정 아이콘
SQLAlchamy 는 안쓰시나요?
랜덤여신
14/10/25 19:18
수정 아이콘
오, 좋은 질문입니다! 그렇지 않아도 답하고 싶던 질문이었어요.


제가 한동안은 SQLAlchemy를 잘 쓰다가, 요즘 좀 흔들리고 있습니다. 아시다시피, SQLAlchemy는 평범한 ORM이 아닙니다. ORM을 쓸 때 발생할 수 있는 온갖 문제들에 대응을 해 놨으며, 필드를 미리 로드할지 안 할지 여부도 정할 수 있는 등 시시콜콜한 부분까지 섬세하게 만질 수 있죠.

그런데 요즘 들어 느낀 것입니다만, SQLAlchemy가 제공하는 추상화 수준에 비해 수고가 너무 많이 드는 게 아닌가 하는 생각이 들기 시작했습니다. 예를 들어, SQLAlchemy는 N+1 문제를 해결한 좋은 ORM입니다만, 그냥 되는 건 아닙니다. joinedload() 라는 걸 쓰죠.

session.query(User).options(joinedload('post')).all()

그런데 이게 맞긴 하지만 어딘가 좀 쓸데없는 군더더기가 많은 것처럼 느끼기 시작했습니다. SQLAlchemy의 저자도 밝히고 있지만, SQLAlchemy는 여타 ORM처럼 SQL을 대체하려고 나온 게 아닙니다. 오히려 SQL을 잘 알아야 SQLAlchemy도 잘 쓸 수 있게 되는 것입니다. 위의 문장이 SQL로는 아래의 문장으로 바뀐다는 것을 확고하게 이해하고 있어야 쓸만하다는 거죠.

SELECT user.id, post.id, post.name FROM user JOIN post

그런데 이런 변환 과정이 머리 속에 바로 그려질 정도라면, 그냥 SQL 문을 써도 가독성에 별 차이가 없지 않을까요? 실제로 저는 같은 일을 하는 위의 두 가지 표현 중 어느 게 더 읽기 좋고 쓰기 좋은지 잘 모르겠습니다. 어찌 보면 SQL이 더 좋아 보이기도 하거든요.


한편, SQLAlchemy의 장점을 파이선과의 긴밀한 결합에서 찾아 볼 수도 있습니다. 예를 들어, SQLAlchemy에 JSON 어댑터를 붙여서 필드에 JSON을 바로 저장할 수 있게 하거나, 여러 필드를 묶어서 calculated field를 만드는 것이 가능합니다. 분명 편한 기능입니다.

하지만, PostgreSQL 9.2에서 JSON 타입이 추가되었고, 가상 필드 또한 SQL에서 뷰를 쓰면 어느 정도 따라하는 게 가능합니다. 이런 것들은 SQLAlchemy를 써야 하는 결정적인 이유가 되지는 못하는 것 같습니다.


그래서 저는 추상화 레벨을 한 단계 포기하고 SQL을 생으로 쓰기로 한 것입니다만... 솔직히 이게 외부 기여를 받는데는 별로 좋지 못한 생각인 것 같기도 합니다. 코드 가독성도 좀 떨어질 것 같고요. 일단 시작은 SQL로 했지만, 아직 여러 가지로 고민이 많습니다...
유리한
14/10/25 23:22
수정 아이콘
오 좋은 답변입니다. GAE로 게임서버를 짤까하는데 sqlalchemy를 쓸지 고민 중이었거든요. datastore에 어울릴지도 모르겠고.. 조금 더 생각을 해봐야겠네요.
근데 랜덤여신님이 barosl님 맞는거죠?
츄지Heart
14/10/25 23:28
수정 아이콘
잘 모르긴하지만... 앱엔진 쓸 땐 JDO 나... 나중에 RDBMS 로 전환할 가능성까지 고려하면 JPA 가 좋지 않나요?
아.. 아니구나... 파이썬 개발은 다를 수도 있겠네요. 자바 위주로 생각하다보니...
유리한
14/10/25 23:39
수정 아이콘
SQLAlchemy는 뭐랄까.. ORM 중에서는 가장 진보한 형태라고 해야할까요.. 철학 자체가 꽤 다른 녀석입니다.
그래서 다른 ORM 다루시던 분 들에겐 좀 생소한 녀석이예요 흐흐
시네라스
14/10/25 19:15
수정 아이콘
저도 장고 이후로는 파이썬에 손댄적이 없었는데 재밌어보이네요 오오...
Neandertal
14/10/25 19:25
수정 아이콘
뭔진 잘 모르겠지만 아무튼 수고가 많습니다...^^b
마스터충달
14/10/25 20:17
수정 아이콘
뭔진 잘 모르겠지만 존경합니다 ^^b
뚱뚱한아빠곰
14/10/25 20:41
수정 아이콘
공돌이는 가만히 있어야겠어요...

공돌이라고 다 알아듣는 건 아니자나요?
14/10/25 22:00
수정 아이콘
재미있겠네요 눈팅 하겠습니다!
부업들이 좀 없으면 조금 참여해보도록 하겠습니다.
청순가련유순연약
14/10/25 22:14
수정 아이콘
공돌이지만 뭔소린지 하나도 모르겠으니 가만히 있으렵니다.
수고하심에 감사하네요!
숫낙타
14/10/25 22:58
수정 아이콘
^^b;;
좋아요
14/10/25 23:17
수정 아이콘
거 운영진 갈리는 소리 좀 안나게 하라!
홍승식
14/10/26 00:24
수정 아이콘
투명잉크로 교차하는 빨간선 5개만 그려주세요!
(운영진 갈리는 소리가 여기까지 들리네요. 좋은 결과가 나오기를 고대합니다.)
스타슈터
14/10/26 00:28
수정 아이콘
파이썬은 좀 아는데 오픈소스 프로젝트는 아직 참여해본 적이 없어서 선뜻 돕겠다고 나서기가 무섭네요. 흐흐...
오랜시절의 오픈소스 지지자로써 기회되면 한번 힘써 보겠습니다!
14/10/26 04:39
수정 아이콘
mysql로 하실거면 스키마부터 문서화하는게 좋을것 같네요. desc 결과물 올려주세요
14/10/27 01:08
수정 아이콘
보안성 평가가 가장 큰 문제네요. 고생 많으십니다..
지켜보고있다
14/10/27 07:49
수정 아이콘
우왕! 좋은일 하시는군요 ㅠㅠ 그런데 zbxe 로 할 생각은 없으신가요??
상상속의동물기린
14/10/27 09:34
수정 아이콘
재미있어 보이네요.
저도 기여할 수 있는 부분이 있는지 살펴보겠습니다. ^^
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
54521 [일반] 임진왜란 해전사 - 7. 이순신, 죄인이 되다 [15] 눈시BBand6171 14/10/26 6171 8
54520 [일반] 내가 좋아하는 오아시스 싱글 Best 10 [26] 리콜한방4631 14/10/26 4631 1
54519 [일반] [스포주의] WWE 헬 인 어 셀 2014 최종 확정 대진표 [10] SHIELD5508 14/10/26 5508 1
54518 [일반] [스포츠] [NPB] 만전을 기하자 [41] GameFictionMovie4530 14/10/25 4530 0
54517 [일반] "내생애 봄날"이라는 드라마 아시나요? [8] 22raptor4894 14/10/26 4894 3
54513 [일반] [야구] '야신의 귀환' 한화, 김성근 감독 선임 확정…3년 20억원 [249] ChoA25139 14/10/25 25139 2
54511 [일반] 마왕. 일어나라. 답지않게 쓰러져 있지 말고. [14] Bergy108115 14/10/25 8115 1
54510 [일반] [축구] 역시 드라마의 완성은 마지막 라운드! [6] ChoA3767 14/10/25 3767 3
54509 [일반] 엘지 트윈스, 2년연속 플레이오프 진출 [40] 낭천6336 14/10/25 6336 0
54508 [일반] [국내야구] 선동렬 KIA 감독이 자진 사퇴했습니다. [236] 노틸러스17702 14/10/25 17702 0
54507 [일반] 그때는 중학교 시절인가. 그럴 것이다. [6] 3539 14/10/25 3539 0
54506 [일반] PGR21 오픈 소스 프로젝트를 소개합니다 [58] 랜덤여신6513 14/10/25 6513 8
54505 [일반] 열차가 지연되어 대단히 죄송합니다. [63] 부끄러운줄알아야지11669 14/10/25 11669 12
54504 [일반] 북한 핵탄두 소형화 능력 갖춰? [21] 야율아보기5221 14/10/25 5221 1
54502 [일반] 최근 발생한 의료사고들에 대하여 (의료붕괴의 시작) [94] 케타로10220 14/10/25 10220 6
54500 [일반] 아이패드 에어2 및 미니3 출시 관련 [18] 스카리 빌파5187 14/10/25 5187 0
54499 [일반] 늦은 나이에 다시 시작하는 창업기 - 3탄 [29] plainee5223 14/10/24 5223 7
54498 [일반] 우리는 쌀 테니 너희들은 치워라... [6] Neandertal6404 14/10/24 6404 3
54497 [일반] 임진왜란 해전사 - 6. 수군의 영웅들과 거북선 [7] 눈시BBand7087 14/10/24 7087 7
54496 [일반] 비정상회담 출연자 비자논란문제가 있었는데 해결됬다 합니다. [20] 류세라8026 14/10/24 8026 0
54495 [일반] CG 파이프라인에 대한 이해 -1. 모델링 [16] 피들스틱5607 14/10/24 5607 8
54494 [일반] 이용계약은 회원 또는 회사의 해지에 의하여 즉시 뼈와 살이 분리됩니다. [13] 유리한10556 14/10/24 10556 0
54493 [일반] 아이폰6 통신 3사 예판이 끝났습니다. (10만대 이상 판매) [47] Leeka7724 14/10/24 7724 0
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로