오픈마루의 스프링노트 뭘로 짠거죠?

divi의 이미지

스프링노트 베타테스트 하고 있습니다.
쓰면 쓸 수록 매력있네요
쓰다보니 이게 뭘로 만드어졌는지 궁굼해 졌습니다.

아무리 생각해도 php + ajax + mysql 조합은 아닌것 같은데요..
혹시 오픈마루의 스프링노트 뭘로 짠건지 알고 계시는분 있으신가요?

비슷하게 흉내라도 함 내보고 싶습니다.

plasticbox의 이미지

이번달 마소에 스프링노트에 관한 부분이 있었던거 같은데..
잘 기억은 안나지만 rails였던거 같습니다 ^^;

Enjoy Life~!

#################
Enjoy Life~!

creativeidler의 이미지

스프링노트는 Ruby on Rails로 개발했습니다. UI 쪽은 다 JavaScript와 CSS의 조합으로 만든 것이구요. JavaScript 쪽 프레임웍은 Prototype, script.aculo.us 정도를 사용했습니다. DB는 MySQL이구요. 파일 첨부 저장소는 내부의 인프라팀에서 자체 개발한 WebDAV 서버를 사용했고 검색은 내부의 검색팀에서 개발한 자체 검색 엔진을 사용했습니다. 위지윅 에디터는 처음에는 tinyMCE를 사용하다가 나중에 XHTML microformat으로 전환하면서 자체 개발한 에디터를 사용했죠. 서버는 Apache + Mongrel 조합입니다.

그리고 다음 링크는 제 블로그에 쓰고 있는 스프링노트 기술보고서입니다. 아직 쓰고 있는 중입니다만 참고하시기 바랍니다.

http://youngrok.com/moin.cgi/%EC%8A%A4%ED%94%84%EB%A7%81%EB%85%B8%ED%8A%B8_%EA%B8%B0%EC%88%A0%EB%B3%B4%EA%B3%A0%EC%84%9C

이런 정보를 노출해도 되는지 아닌지 팀에 확인을 받진 않았습니다만-_- 어차피 대부분 오픈소스 프레임웍을 쓰는 것이고 무슨 기술을 사용했는지가 비밀인 건 아니기 때문에 그냥 올립니다.

winner의 이미지

내용 정말 알차네요.
RHEL vs. Ubuntu 등 이어지는 내용 정말 궁금하네요.

CVS vs. Subversion 같은 것도 있으면 저로서는 좋겠지만 이것은 이미 승부가 끝난 것 같군요.

Ruby 와 최소놀람원칙은 확실히 거리가 있어보입니다.
Martin Fowler 가 썼던 Java 와 Ruby 를 Minimal interface 와 Humanic interface 라고
하면서 논쟁을 불러왔던 글이 기억나네요.

doodoo의 이미지

쓰신 기술보고서에 보면 subversion 이 의외로 버그가 많은가 보군요..
둘다 아직 써볼일이 없어서 잘 모르겠지만..그렇게 cvs에서 subversion 으로 넘어갈만한
메리트가 없는걸까요?

다들 써보신분들 의견을 듣고 싶네요..

익명 사용자의 이미지

제가 있는 회사에서 옛날에는 CVS를 이용해서 개발을 하다가 2년쯤 전부터 subversion으로 바꿔서 개발하고 있습니다.

도끼로 나무하다가 전기톱 들고 하는 기분입니다. 정말 강력하다, 아니 그보다는, 그냥 version control system이라면 기본적으로 제공해야 하는 기능이 이런 건데 우리가 그동안 모르고 있었구나, 그런 기분입니다. 특별히 버그가 문제가 된 적은 없습니다. (솔직히 버그가 있다고 전기톱 버리고 도끼 쓰시겠습니까?)

CVS는 이력을 파일 단위로 관리하고, subversion은 repository 전체 단위로 관리합니다. 그래서 "언제부터 언제 사이에 무슨 일이 있었나" 같은 걸 subversion은 아주 쉽게 알아볼 수 있지만 CVS는 어렵습니다. Branch를 나눠서 작업하는 것도 CVS에서는 눈물나는 일이지만 subversion은 큰 문제없이 가능합니다. (사실 요즘 나오는 다른 툴만큼 branch를 멋지게 지원하지는 않습니다. 이런 기능은 arch, git, bazaar 등등에선 때깔나게 지원한다고 하는데 써본 적이 없어서...)

CVS는 atomic commit을 지원 안하기 때문에 빌드를 자동화하는 게 곤란합니다. "다른 사람이 커밋을 반쯤 하는 도중에 빌드를 하려고 소스를 받아서 빌드가 깨지는 상황"이 이론적으로 언제든지 발생할 수 있습니다.

기타 등등 subversion의 장점이 한두 가지가 아닙니다.

creativeidler의 이미지

대체로 커맨드라인에서 svn을 이용하는 사람들은 좋은 평가를 줍니다. 저희 오픈마루 같은 경우는 3분의 1 정도가 vim + 커맨드라인에서 C/C++ 개발을 하고 나머지 3분의 2는 이클립스에서 Java/Python/Ruby/JavaScript로 개발합니다.(소수 TextMate 유저가 있죠) 전자의 경우는 대부분 svn이 약간 낫다는 평가를 내립니다. 후자의 경우는 cvs보다 낫다는 사람은 거의 없는 것 같습니다. 그냥 참을만 하다는 사람도 많지만 cvs로 돌아가고 싶다는 사람도 적지 않습니다.

버그는 크게 두 가지입니다. 하나는 svn 자체 문제. 많은 파일과 디렉토리를 한 번에 커밋할 때 lock이 걸리는지 멈춰버리는 현상이 생깁니다. 이 문제는 이미 많은 사람들이 겪고 있는 문제더군요. 해결책은 조금씩 나눠서 커밋하는 거라고 합니다-_- 대체 그럼 changeset은 엇다 쓰라는 거얏!

다른 하나는 이클립스 플러그인의 버그입니다. 이게 거의 살인적입니다-_- 이건 한두 가지가 아니라서 다 열거도 못합니다. 그래서 이클립스 유저들은 CVS를 선호하는 경우가 많습니다. 사실 이클립스 유저에겐 cvs가 기능이 많으냐 svn이 기능이 많으냐는 중요하지 않습니다. 이클립스 플러그인에서 제공하는 기능이 뭐가 더 좋으냐가 문제인 거죠. 실상 svn이 더 낫다고 하는 부분들은 이클립스의 CVS 플러그인에서 다 제공하고 있기 때문에 이클립스 유저들에게는 그 차이가 별 의미가 없습니다. 브랜치나 태깅도 쉽고 특정 시간으로 스냅샷 보는 것도 쉽습니다. 태그 다는 것만 따지면 svn보다 더 빠르고 쉽습니다. diff&merge 역시 오히려 svn보다 더 좋죠.

atomic commit도 이론상으로야 발생할 수 있는 문제지만 실제로 발생하느냐..하고 물으면 답이 달라집니다. 자동 빌드 툴에서 빌드 깨지면 자동으로 retry하게 해주면 되는 거구요.

위에 어떤 분이 버그 있다고 전기톱 버리고 도끼 쓰겠냐고 하셨는데, 버그 때문에 전기톱이 빙빙 돌다가 자기를 향하기도 한다면 그래도 전기톱을 쓰시겠습니까? 전 요즘 subversion을 썩을버전이라고 부르는데 주변에서 이 말에 이의를 제기하는 사람은 별로 없습니다.

김성진의 이미지

svn에 대한 의견이 이렇다니 의외입니다.

저의 경우 회사에서 CVS를 약 5년간 쓰다가 작년에 SVN으로 바꿨습니다.

code commit, revision 관리, 추적, simple한 개념 등등에 있어서

cvs보다 낫다고 저는 평가를 했습니다.

버그의 경우도 심각한 경우를 발견하지 못했는데, 사용 domain에 차이가

있어서 그런 것도 있겠네요.

svn이 cvs보다 나은 결정적인 부분은 branch관리나 tag 만들 때 입니다.

단지 revision을 복사하면 되는 것이지, cvs처럼 모든 소스코드에 대해서 tag를

달기위해 몇십분동안 repository를 뒤지는 경우는 없거든요.

소스코드의 양이 몇백메가가 되다 보니..이런 문제가 cvs에선 쉽게 해결이 안되더군요.

환경의 차이라고 생각됩니다.

혹시나 윗 들을 읽고, svn에 대해서 선입견을 가지시는 분들이 계실까 올리는 글입니다.

그리고, 저흰 별도의 툴은 거의 사용하지 않고, 대부분 command line에서 작업합니다.

김성진

고도의 추상화, 극도의 구체화, 에디슨을 그리워하다.

고도의 추상화, 극도의 구체화, 에디슨을 그리워하다.

doodoo의 이미지

다들 의견이 조금씩 다른것 같군요...^^;

저도 이제 막 쓸려고 준비중인데.. kldp wiki 에 있는 문서 정도면 충분히 이해하고 갈수 있겠죠?

howl의 이미지

Ruby on Rails에 대해서 궁금하면서도 공부하기는 싫었는데, 생생한 실전 개발 경험을 나눠주셔서 감사합니다.
제가 잘 이해했는지는 모르지만, 결론은 '아직 덜 익었다..'로 파악해도 될까요??
--------
We Await Silent Trystero's Empire

--------
We Await Silent Trystero's Empire

creativeidler의 이미지

그게 꼭 그런 얘기만은 아닙니다. 오히려 익기는 충분히 익었지만 디자인이 맘에 안 드는 부분이 많다...랄까요. 사실 RoR 류의 프레임웍 중에서는 RoR이 가장 완성도가 높습니다. ORM도 훨씬 긴 역사를 갖고 있는 Hibernate보다도 나은 평가를 받고 있고 템플릿 엔진도 단점을 지적하긴 했지만 다른 것보단 낫습니다.

그냥 제가 원래 좀 까칠한 사람이라는 걸 감안하고 보시는 게 좋을 것 같습니다. RoR 말고 다른 것들에 대해 평가했다면 훨씬 심한 평가를 했을 겁니다. 이를테면 Struts나 Spring 같은 건 죄다 쓰레기로 평가합니다-_- 이번 프로젝트는 Django로 진행하고 있는데 아마 Django 역시 Rails보다 더한 혹평을 받게 될 겁니다.

그렇다고 제가 시니컬한 사람은 아닙니다-_- 다만 현재까지 나온 프레임웍들이 최선(그게 어떤 건진 잘 모르겠으나)과는 거리가 너무 멀어보인다는 것 뿐입니다.

어쨋든 웹에서 무언가를 개발해야 한다면 성능 이슈를 제외하면 현재까진 RoR이 최고인 것 같습니다.

winner의 이미지

Ruby 만 놓고 보면 not good 인가요?
사실 Ruby 가 뜬 이유 중 하나가 Rails 때문이기도 한데...

문법의 자유로움이나 해킹가능성은 개인의 취향문제일지도 모르겠습니다.

creativeidler의 이미지

Ruby도 사실 not good은 아닙니다. 제가 자신 있게 비교할 수 있는 언어는 C, Java, Python, JavaScript인데 C / Java보다는 고급 언어인 만큼 문법적으로는 더 진보해 있는 게 사실입니다. Python이랑 비교하면 장단이 있고 취향 문제가 있을 수 있다..라고 말씀드릴 수 있겠습니다. JavaScript보다는 간결함, 단순성, 자유도 면에서 Ruby가 좀 못한 것 같습니다.

어쨋든 현재 현업에서 무리 없이 쓸 수 있는 언어 중에서는 아주 좋은 편에 속합니다. 저희 혹평은 있지도 않은 이상-_-과의 비교에 의한 것이니 그저 Ruby를 쓸 때는 저런 단점이 있을 수 있겠구나.. 정도로 받아들여 주시면 감사하겠습니다.

howl의 이미지

Django라 하시면, 파이썬이라고 알고 있는데, 서버는 어떻게 구성하시는지 궁금합니다.
mod_python은 문제가 많다고 들어서 파이썬 웹프로그래밍은 엄두를 못내고 있었는데, 프로개발자분들은 어떻게 사용하시는지 궁금하네요. ^^;;
국내 웹에서도 많이 활용하고 있나요?
저는 사실 웹개발은 잘 모르고, 회사에서 어쩔 수 없이 PHP로 간단한 내부용 웹어플을 만드는 수준인데. PHP 외의 것에 관심이 많습니다. ^^;
하지만 뭐든 시작하기가 망설여지네요. 워낙 slow learner거든요.
creativeidler님은 다양한 기술들을 금새 배우고 활용하시는 것 같아서, 부러울 따름입니다.
--------
We Await Silent Trystero's Empire

--------
We Await Silent Trystero's Empire

creativeidler의 이미지

운영 환경 구성 방법은 보통 두 가지가 있습니다. Django community에서 추천하는 제1옵션은 mod_python이고 제가 써본 바로도 가장 좋습니다. mod_ruby는 문제가 많다는 얘기를 많이 들었지만 mod_python은 대체로 좋은 평가가 많습니다. 다른 하나는 fastcgi를 이용하는 것인데 성능을 측정해보면 mod_python만 못합니다. 물론 fastcgi 특성상 시스템 전체의 리소스 활용은 fastcgi가 좋지만요. 설정하기도 mod_python이 좀더 쉬운 것 같습니다.

그 외에 cherrypy 서버에 올리는 방법도 있는데 이건 성능이 10분의 1로 떨어지더군요. 추천하지 않습니다. zope나 twisted에 올리는 방법도 있다고 하는데 안 해봐서 잘 모르겠네요.

국내 웹에서 파이썬 웹 프로그래밍을 하는 사람은 생각보다 많습니다. 얼마 전 webappscon에서 TurboGears를 발표하신 이만용씨의 경우도 TurboGears로 많은 프로젝트를 했다고 하시고 또 Django로 10여개의 프로젝트를 했다는 분도 있습니다. 그리고 이런 거 나오기 전에도 파이썬 기반으로 웹 애플리케이션을 만드는 기업은 꽤 있었죠.

howl의 이미지

막연하게 mod_python에 대한 소문만 듣고 의심했는데, 파이썬 마을에서 전에 본 글을 다시 찾아보니, 엄청 옛날 포스트네요. ^^;;
그래서 공부를 시작해보려고 합니다. 재미있을 것 같네요. 여러가지 좋은 가르침을 주셔서 감사합니다!
..앗, 이만용씨는 그 유명하신 그 이만용씨군요.
--------
We Await Silent Trystero's Empire

--------
We Await Silent Trystero's Empire

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.