Git Product home page Git Product logo

rhymix's Introduction

Rhymix

PHP Lint & Codeception

한국어

Rhymix(라이믹스)는 누구든지 쉽고 자유롭게 독립적인 홈페이지를 만들어 자신을 표현하고 커뮤니티를 키워나갈 수 있도록 돕기 위한 CMS(content management system)입니다.

XpressEngine 1.8 버전을 fork(가지치기)하여 진행하는 프로젝트로, 누구나 무료로 사용할 수 있고 개발에 참여할 수도 있는 자유 소프트웨어(free software)입니다.

Rhymix는 "시를 짓다, 운을 맞추다"라는 의미의 "rhyme"과 "조합하다, 변주하다"라는 의미의 "remix"를 합친 이름입니다. 라이믹스는 인터넷 공간에서 자유롭게 창작 활동을 하고 다양한 소프트웨어와 콘텐츠를 조합하여 새로운 것을 만들어내는 모든 사용자들을 응원합니다.

개발 방향

Rhymix는 개발자와 사용자가 서로의 권리와 책임을 존중하는 인터넷 생태계, 중앙집중형 SNS 플랫폼에 의존하지 않고도 누구나 내 목소리를 낼 수 있는 세상, 벤처기업이나 스타트업의 개발자들뿐 아니라 평범한 블로거, 동호회, 학생, 장애인 등도 사이버 공간에 당당하게 집을 짓고 서로 소통할 수 있는 미래를 만들어가길 원합니다.

개발자 위주, 서비스 제공자 위주로 나아가는 현대의 IT 동향을 무차별적으로 받아들이기보다는 사용자의 주권과 열린 인터넷 환경을 보호하는 기술을 집중적으로 발굴하며, 우리나라 인터넷 커뮤니티의 성장을 이끌었던 90년대 제로보드와 2000년대 XE의 정신을 이어받아 2020년대 현재 위기에 처한 오픈 웹을 지키고 회복시키는 일에 앞장서고자 합니다.

그러기 위해서는 다른 어떤 CMS보다도 일반 사용자를 위한 편리성이 가장 뛰어나야 합니다.

  • 초보자도 쉽게 클릭 몇 번으로 웹사이트를 완성할 수 있을 만큼 편리한 CMS
  • 최신 기술을 적극적으로 사용하고 속도가 빠르며 보안이 우수한 CMS
  • 커뮤니티를 통해 사용자와 개발자의 건전한 의사소통을 돕는 CMS
  • 애드온, 모듈, 위젯 등 기존 XE 서드파티 자료들과의 호환성을 최대한 보장하려고 노력합니다.

설치 환경

Rhymix를 사용하려면 PHP 7.2.5 이상, MySQL 또는 MariaDB가 필요합니다. 자세한 설치 환경은 매뉴얼을 참고하십시오.

개발 참여

Rhymix는 개발자, 디자이너, 번역가 등의 도움과 일반 사용자들의 버그 신고를 환영합니다. 참여를 원하시는 분은 질서있고 효율적인 프로젝트 운영을 위해 이슈 및 PR 작성 방법코딩 규칙을 먼저 읽어 주시기 바랍니다.

보안 취약점을 발견하셨다면 해커들에게 알려지기 전에 먼저 패치를 작성할 수 있도록 [email protected]로 알려 주시면 감사하겠습니다.

공식 홈페이지

커뮤니티

저작권 및 라이선스

Rhymix는 GNU GPL v2 또는 그 이후 버전 라이선스의 적용을 받는 자유 소프트웨어(free software)입니다. 자유 소프트웨어는 "오픈소스" 또는 "개방형"이라는 명칭으로도 알려져 있으며, 개발자와 사용자의 자유와 권리, 참여와 책임을 강조하는 프로그램으로 누구나 무료로 사용할 수 있고 개발에 참여할 수도 있습니다.

Rhymix는 NAVER가 일부 저작권을 가진 XpressEngine의 소스코드에 바탕을 두고 있습니다. Rhymix 개발자들이 추가 및 변경한 부분의 저작권은 해당 개발자들에게 있습니다.

XpressEngine은 초창기에 GPL을 사용하다가 버전 1.4.0부터 LGPL로 전환했지만, Rhymix는 사용자의 권리를 더욱 보호하고 자유 소프트웨어 본연의 정신에 충실하기 위해 라이선스를 GPL로 되돌렸습니다. (라이선스 전환은 LGPL v2.1 제3조에서 허용하고 있습니다.)

GPL은 WordPress, Drupal, Joomla 등 세계적인 CMS들이 공통으로 채택하고 있는 라이선스이므로 사용자 및 개발자의 권리와 의무도 이러한 CMS들의 경우와 동일합니다.

홈페이지에 Rhymix를 사용하는 것만으로 소스코드를 공개할 의무가 발생하지는 않으며, Rhymix의 소스코드를 수정하거나 확장 기능을 직접 개발하여 사용하더라도 마찬가지입니다. 그러나 직접 개발한 확장 기능을 제3자에게 배포 또는 판매할 경우에는 반드시 소스코드를 제공해야 하며, 이러한 소스코드는 모두 GPL 라이선스의 적용을 받습니다.

English

Rhymix is a content management system (CMS) for everyone who wants to create independent homepages to express themselves and build their communities easily and freely.

Rhymix is a fork of XpressEngine version 1.8 and is free software that anyone can use for free and participate.

Rhymix is a combination of "rhyme" in the sense of "making a poem, adjusting the sound", and "remix" in the sense of "combining, changing". Rhymix cheers everyone who freely creates and/or assembles new things in the Internet space by combining various software and contents.

Development Direction

Rhymix developers want an Internet ecosystem where developers and users respect each other's rights and responsibilities, a world where everyone can speak their voice without relying on a centralized SNS platform, a future where ordinary bloggers, students, the disabled and others as well as developers of startups can build a home in cyberspace and communicate with each other.

Rather than indiscriminately accepting modern IT trends that are centered on developers and service providers, we focused on technologies that protect users' sovereignty and open Internet environment. Taking the spirit of ZeroBoard and XpressEngine, which led the growth of the Korean Internet communities in the 1990s and 2000s respectively, Rhymix wants to take the lead in recovering and restoring the open web in the crisis of the 2020s.

This requires the most convenience for the average user over any other CMS.

  • CMS that is convenient enough to create the website easily, even for beginners, with a few clicks
  • CMS that is actively using the latest technology, fast and secure
  • CMS to help users and developers communicate well through community
  • We try to ensure maximum compatibility with existing XpressEngine third-party materials such as add-ons, modules and widgets.

Installation Environment

Rhymix requires PHP 7.2.5 or higher, and MySQL or MariaDB. Please see the online manual for more information on server requirements.

Participation in Development

Rhymix welcomes developers, designers, translators, and bugs to the public. If you would like to participate, please read Issue and PR Submission Guide and Coding Standards first to ensure efficient and orderly project management.

If you have found a security vulnerability, please let us know at [email protected] so that we can make a patch before it is exploited.

Official Website

Community

Copyright and License

Rhymix is a free software licensed under the GNU GPL v2 or later. Free software is a program that emphasizes the rights and responsibilities of developers and users to participate or use in freedom.

Rhymix is based on the source code of XpressEngine (Github), which is free software partly owned by NAVER. Rhymix developers have copyrights on the added and modified code.

XpressEngine has been licensed under the GPL in its early days and switched to LGPL from version 1.4.0, but Rhymix has reverted its licenses to the GPL for further protection of the rights and spirit of free software. (License conversion is allowed in LGPL v2.1 Section 3.)

The GPL is commonly adopted by global CMSes such as WordPress, Drupal, and Joomla. The rights and obligations of users and developers of Rhymix are the same as those CMSes.

The use of Rhymix on homepage does not impose a duty on you to release the source code, even if you modify the source code or develop the extension yourself. However, distributing and/or selling the source code or extension according to the GPL license, you have to provide the source code.

rhymix's People

Contributors

akasima avatar bjrambo avatar bongkeun avatar canto avatar corinadev avatar devjin avatar dewekk avatar dorami avatar dragan-dan avatar flourscent avatar flyskyko avatar haneul avatar izuzero avatar khongchi avatar kijin avatar lcy7747 avatar longjohnsilver82 avatar misol avatar myaming avatar nagoon97 avatar naradesign avatar ngleader avatar qw5414 avatar rayyin avatar sejin7940 avatar smaker avatar taggon avatar upgle avatar xvezda avatar yjsoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rhymix's Issues

슬랙 travis 테스트 연동 및, XETown/xe-core의 권한 건의

travis 빌드 테스트를 통해서 전체적으로 언어가 정상작동되는지 검사하고, 해당 부분 slack에 연동하여 같이 사용햇으면 좋을 것 같습니다.

현재 각각 커미터들이 XETOWN 계정의 팀원이 아닌 xe-core의 콜레보터(?)(영어노잼..) 으로 되어있는데, 해당부분을 XETOWN계정의 팀원으로 함께 묶어서 운영했으면 좋겠습니다.

XETOWN 프로젝트에서 정리해야 될 사항들

원래 XETOWN Fork는 XE팀의 늑장대응에 지쳐서, 단순히 쓸만한 PR을 Merge하기위해 만들어졌습니다.
하지만 일이 커져버렸습니다. 이제는 파생 XE 버전 개발의 방향으로 가고 있습니다.

이 시점에서 아래 사항들에 대해 정리해보겠습니다. 의견 있으시면 자유롭게 댓글 남겨주세요.

이름

추후에 배포될 프로그램이름 말입니다. 이전까지 명확한 이름이 없었습니다. xetown fork, xetown cms, xetown core 등으로 불렸을 뿐입니다.

이제는 그 이름을 XETOWN REMIX (XTR) 라고 부르도록 하겠습니다. @kijin 님께서 제안해주셨습니다.
더 좋은 이름이 있으시면 제안해주세요.

라이선스

현재 라이선스가 정해지지않은 상태입니다. 의견을 말씀해주세요.
GPL, LGPL, MIT License .....

우선순위

시급한 보안/버그 > 호환성 > 편의 기능추가 > 속도개선 > 기타 기능추가/개선
구조적 변경이 필요할 경우 XE 서드파티의 호환성을 최대한 유지하면서 변경하도록합니다.

의사결정

본 이슈처럼 프로젝트에 대한 중대한 결정이 필요할 경우 이슈를 남겨서 서로 소통하도록 합니다.
가벼운 사항들은 Slack에서 소통하겠습니다.

ifream 에서 아프리카는 아직 스팸주소로 등록된듯한?

<iframe src="http://afree.ca/qw5414/163607150/embed" width="720" height="442" frameborder="0" allowfullscreen></iframe>

해당 코드를 XETOwn을 통해서 공유 햇더니, 해당 코드에서 src부분이 제거되는 문제점을 발견했습니다.

아마도 XE개발에서 afree.ca 주소를 스팸으로 인식하여 지우는 역활한 것 같습니다.

혹시 이 주소를 사용하게 할려면 어떻게 해야하는지 알려주신다면 제가 커밋 넣어두도록 할께요 :)

언어팩 파일이 분리되었으면 좋겠습니다.

이전 XE에서도 똑같이 건의하긴 했었는데, 한 번 건의해봅니다.

이미 다양한 프로그램에서는 각각 언어 파일이 분리되어 있습니다.
(예: ckeditor, editplus 등등)

XE도 초기에는 lang/ko.xml, lang/en.xml 으로 분리되어 있었으나, 현재는 lang.xml처럼 하나의 XML로 합쳐진 상태입니다.

(너무 퍼스트 개발자적인 일처리가 아니었나... 생각합니다. - 추후 유지보수는 어쩌라고...)

별도의 언어 제작툴이 없는 현 상황에서 처음 작성할 때는 유리하지만, 추후 다른 언어를 추가할 때,
또 그 추가하는 사람이 다른 사람인 경우 추가하기도 어려울 뿐더러 추가하더라도,
사용자에 따라 일일이 직접 기입해야하는 불편함이 있습니다.

다국어 자체가 현재 흐지부지한 상태이긴 하나, 필요한 기능이고, 장기적인 유지보수 측면에서 언어팩 파일은 하나의 파일이 아닌 필요할 때 각각의 파일로 불러오는 것이 맞다고 생각되어 집니다.

따라서 건의합니다.

그누보드5 이전툴

그누보드4의 경우 기존제공이 되지만 그누보드5의 경우 없는걸로 알고 있습니다.
그누보드5 -> 라이믹스 로의 이전툴이 있었으면 합니다.

XE 정지된 회원 팝업 메시지에 정지사유 표현하기

꼭 정지하실때 회원정보수정에서 설명에 정지사유를 적어주셔야합니다.

코어 수정이 필요한 작업 입니다.

/modules/member/member.controller.php 열고
return new Object(-1,'msg_user_denied'); //이부분을
아래와 같이 수정합니다.
return $this->stop(Context::getLang('msg_user_denied')."\r\n   ".$this->memberInfo->description); //이렇게 수정

참고로 회원 설정에서 관리자 메모를 지정해줘야 나옵니다.

짧은 주소 규칙도 변경해보면 어떨까요?

짧은 주소 쓰는 것이 대세라면 대세인데,

XE는 조금 제약이 많은 것 같더라구요...

예를들어 MID + 문서번호 외에 다른 변수가 들어오면 짧은 주소가 아닌

index.php?mid~ 와 같은 주소로 바뀌는... 반쪽짜리지요...

듣기론 예전버전에서는 page까지 짧은 주소로 처리했었다라고 하던데요.. @YJSoft 님께서 말씀하시길

적절한 규칙을 내세워 특별한 경우를 제외하고는 짧은 주소를 사용시 계속 짧은 주소로만 나왔으면 하는 생각입니다.

이건 좀 고민을 해봐야할 것 같네요...

게시판을 생성한 뒤 글을 쓸려고 하면 글을 쓸 수 없습니다.

XEDITION 및 기본 게시판 스킨으로 테스트해보았는데요.
게시판을 생성한 뒤 글을 쓸려고 하면 글을 쓸 수가 없고(공백 화면이 나옵니다.)
또한 제목, 글쓴이, 조회수 등의 상단에 보이는 글씨가 보이지 않는 증상이 생깁니다.
XETOWN에서 쓰고 있는 것이 자체 수정한 이 XETOWN Core라는 점을 감안하였을 때, 스케치북 게시판을 쓰면 해결될 것 같아보입니다만 다른 게시판 스킨을 쓰는 사람도 해당 문제로 난항을 겪고 있을 듯 해보여 문제점을 제기합니다.

캡차 기본 설정에 대해서.

XE코어(이하'xe')는 캡차가 기본으로 적용되어있지 않습니다.
그래서 일부 호스팅의 ip을 인식하여 생성된 사이트들을 검색하고, 해당 사이트에 스팸공격이 아주많이 들어오는 경우가 있습니다.
(국내는 모르겟지만 해외의 경우 영어 스팸글이 무진장올때가 많습니다.)
해당 부분을 방지하기 위해서는 사용자가 글등록을 할때, 로그인사용자만 가능하도록 한다던가 해야하는데, 그렇게 하면 비로그인 사용자는 참여를 못하는 등등 문제점이 있습니다.

워프, 그누보드 기타 등등은 모두 캡차를 사용하도록 되어있습니다.
저희도 역시 XE를 따라 캡차를 안쓰는 방향을 택할 이유는 없어보입니다.

XETOWN Remix 에서.. Context.class.php 파일에 에디터가 오류를 표시함..

Context.class.php파일에서
is_a($this, 'Context') ? $self = $this : $self = self::getInstance();
이러한 코드들의 쓰이는 $this항목이 오류가 있다고 Phpstorm 에서 오류를 표기하고 있습니다.

해당 이유가 어떤건지 알 수 있을까요?

사이트는 정상적으로 구동은 가능하고, 기진곰님의 오류항목표시 모듈에서도 오류가 뜨지 않습니다.

회원모듈과 커뮤니케이션 모듈의 통합의견

커뮤니케이션이라는건 회원들간의 커뮤니티를 말함을 이야기합니다.
그런데 굳이 회원모듈과 분리시켜서 관리해야 하는가 생각하게 됩니다.
회원모듈의 일부분으로서 모듈내에서 커뮤니케이션을 설정 할 수있게 개선되어야 한다고 봅니다.
회원모듈 스킨따로 커뮤니케이션 모듈 스킨 따로 개발해야하는 불편함도 있습니다.

리라이팅 룰 개선 및 리라이팅 방식 개선

간단하게 요약하겠습니다.

현재 리라이팅 방식을 코드이그나이터, 라라벨에서 쓰는 방식(nginx의 경우 try_files형식)으로 변경하였으면 좋겠습니다.

다음과 같은 이점이 있습니다.

  1. 모듈 혹은 애드온을 통한 주소 라우팅 가능
  2. 웹서버별 세팅법을 찾아다니는 문제점 해소

쪽지함 기능 개선안

현재 쪽지함의 단점

  • 상대가 보낸 쪽지와 내가 쓴 답장, 거기에 또 상대가 보낸 답장을 한눈에 보기 힘듭니다. 예전 쪽지를 클릭하거나, 역순으로 아래에 붙는 원본메시지를 확인해야 하니까요.
  • 원본메시지가 계속 아래에 붙으면서 불필요한 DB 공간을 차지합니다.
  • 받은쪽지함과 보낸쪽지함을 오가기가 불편합니다. 꼭 두 번 클릭을 해야 합니다.
  • 쪽지수신 설정 옵션이 쪽지함 선택 화면 바로 옆에 있기 때문에, 의도치 않게 수신거부를 해 버리는 문제가 생기기도 합니다.
  • 메일알림 여부가 수신자의 의사와 무관하게 발신자의 의사에 따라 결정됩니다.

개선안

  • Gmail처럼 받은 쪽지와 답장 쪽지를 한 화면에서 순서대로 볼 수 있도록 합니다.
  • 원본메시지는 아예 안 붙이거나, 만약 통째로 붙은 경우 숨깁니다. (일부만 인용하는 것은 가능)
  • 받은쪽지함과 보낸쪽지함의 구분을 없애거나, 별도의 링크로 구성하여 한 번만 클릭하면 되도록 합니다.
  • 쪽지수신 설정은 회원설정 페이지로 옮깁니다. (#108 회원모듈과 커뮤니케이션모듈 통합)
  • 메일알림 여부도 수신자의 쪽지 설정에 따라 처리합니다.

모바일에서 Finger zoom 을 할수 없는 문제

아마 코어를 머지해서 그럴것 같지만 라이믹스에서는 굳이 이걸 강제할 필요는 없을 듯 합니다.

/common/tpl/mobile_layout.html

정도로 수정하여 사용 하고 있습니다. 라이믹스에서는 기본 반영이 되면 어떨런지 합니다.

팝업 위주의 동작 개선 필요

에디터 컴포넌트, 게시글 관리, 쪽지의 공통점은?

  • 새 창으로 팝업이 뜬다는 것입니다. 모바일/태블릿 환경에서 정말 불편하죠.
    이걸 레이어로 변경하였으면 좋겠습니다.

관리자 페이지 개선 제안 1 - 문서 관리

사실 기존 코어의 관리자 페이지에서 이해가 안되는 부분이 있습니다. 그중 첫번째로 문서 관리 부분 제안 드려 봅니다.
관리자 페이지 - 콘텐츠 - 문서

에서 게시물 이동을 하는 경우에 도착 게시판에서 분류를 선택할수 없습니다. 결국 쓸모가 없는 기능이 되어 버렸습니다. 결국 다시 게시판 으로 직접 이동하여 다시 분류를 지정해줘야 합니다.

XE함수 추가 지원 또는 그외 요청

현재 친구 추가 기능이 사용 도가 매우 떨어집니다. (항상 말하지만)
어느 XE 사이트에 가도 친구 기능은 그저 장식품에 불과합니다.

친구 기능이라는 게 '친구 추가하면 상대방도 승인해야 친구'되는 게 정상인데..
(문득 생각나는 게 코노리님의 '후원 애드온'입니다 상대방이 친구추가 클릭하면 '예/아니오'뜨고 쪽지가
상대방에게 전달이 됩니다. 상대방은 쪽지를 보고 승인(쪽지에 버튼)을 하게 하는 거죠. 아니면 프로필에 "친구 신청 대기자"목록을 표시해서 신청 승인 및 거부를 할 수 있으면 좋겠네요. '친구 차단' 기능도 기본적으로 지원하면 좋겠지만요)
현재는 그런 게 없어서 만들다 포기한 케이스 같네요.
이 방법이 간단하게 된다면 친구 기능을 이대로 두는 게 좋을 것 같습니다.

그리고 '친구인 경우'의 조건문을 XE함수로 지원했으면 좋겠습니다. (매우 유용합니다!)
{$grant->manager} {$is_logged} {$logged_info->is_admin} 같은 {$logged_info->$friend} 형식으로요.
위 방법이 좋겠지만 복잡하면 차라리 팔로우 기능 같은 형태로 두는것도 괜찮겠네요.

그 외추가로 XE 함수가 지원되었으면 좋겠습니다.
해당 회원의 "총 게시글/댓글 개수"라거나 "총 좋아요 개수" 정도로 지원되면 좋을 것 같아요.

프로필 부분도 너무 아쉬운 게 있는데요. 해외 CMS 보면 기본적으로 프로필 구역에는
개인 "방명록"을 지원합니다. 해당 회원의 프로필 접속을 유도하는 거죠.

라이믹스가 보다 다양한 기능(이런 기본적인 기능)을 지원해서 XE 시장도 활발해질 수 있게 했으면
좋겠다는 생각을 합니다. 전문가 수준으로는 모르지만 이것저것을 뜯어고치기를 좋아하는 저 같은
사람에게는 이런 게 지원되었으면 하는 바람이 있습니다.

위젯 스타일 제거 대한 의견

위젯 스타일 활용하는 사이트가 별로 없습니다. 그리고 관련된 자료 역시 많지 않아요.
이걸 위젯으로 대체되어도 얼마든지 충분하고요.

한꺼풀이라도 가벼워지기 바라는 마음으로 위젯 스타일을 제거하는게 어떨까 생각합니다.
라이믹스가 이걸 곧이 떠안고 갈 필요성이 있나 싶어요.

폴더 구조 정리 및 플러그인/테마 도입을 위한 로드맵

폴더 구조 재구성의 목적

  • 코드를 간결하게 하고 직관적인 구조로 만들어 핵심 개발자들의 유지보수 편의를 높임
  • 개발이 어려운 애드온, 모듈 등을 대체하기 위한 초간편 "플러그인" 시스템, 여기저기 분산되어 있는 레이아웃과 스킨들을 한 군데에서 관리하기 위한 "테마" 등을 도입하여 서드파티 자료 제작자들의 편의를 높임 (XE3에서 한다면 우리도 할 수 있습니다!)
  • 캐시파일 문제, 메뉴 문제 등 흔히 발생하는 버그를 제거하여 사용자 편의를 높임
  • 그러면서도 기존의 구조로 만들어진 자료와 100% 병용할 수 있도록 하여 호환성을 유지하고, 장기적으로 새 구조의 자료를 활성화시킴

작업 기한

  • 플러그인과 테마를 제외한 구조조정: 2016년 2월까지
  • 플러그인과 테마 도입: 2016년 말까지
  • common/framework 새 클래스 추가: 계속
  • files/cache 내부 정리: 계속

세부 제안

대부분의 변화는 common, config, files 폴더 내에서 이루어집니다.
오른쪽이 비어 있는 항목은 그대로 유지한다는 의미입니다.
번호가 붙어 있는 항목은 각주를 참고하세요.

addons
admin                               =>  common/manual
classes
common/css (*11)
    (신규)                          =>  common/defaults (*6)
    (신규)                          =>  common/framework (*3)
common/img
common/js (*11)
common/lang
    (신규)                          =>  common/libraries
    (신규)                          =>  common/manual
common/tpl                          =>  common/views
config/config.inc.php               =>  common/autoload.php (*4)
config/config.user.inc.php
    (신규)                          =>  common/constants.php (*5)
    (신규)                          =>  common/functions.php
config/func.inc.php                 =>  common/legacy.php
config/package.inc.php              =>  (삭제)
files/attach
files/cache                         =>  (내부 구조 정리 필요)
files/config/db.config.php          =>  files/config/config.php (통합) (*7)
files/config/ftp.config.php         =>  files/config/config.php (통합)
files/config/lang_selected.info     =>  files/config/config.php (통합)
files/config/module_extend.php      =>  files/config/config.php (통합)
files/env                           =>  (삭제)
files/faceOff (*8)                  =>  캐싱 목적이므로 files/cache 아래로 옮김
files/member_extra_info             =>  (내부 구조 정리 필요) (*9)
files/ruleset                       =>  캐싱 목적이므로 files/cache 아래로 옮김
files/site_design                   =>  캐싱 목적이므로 files/cache 아래로 옮김
files/thumbnails                    =>  (내부 구조 정리 필요) (*9)
layouts
libs                                =>  (삭제) (*10)
m.layouts
modules
    (신규)                          =>  plugins (*1)
tests
    (신규)                          =>  themes (*2)
tools                               =>  (삭제)
vendor
widgets
widgetstyles
  1. 새 구조의 플러그인은 plugins 폴더에 넣고, 기존 형태의 애드온, 모듈, 위젯은 기존 경로에서 그대로 사용 가능합니다.
    • 설치된 플러그인 목록을 작성할 때 양쪽 경로를 모두 확인하되, 새 구조의 플러그인에 우선순위를 둡니다.
    • 기존 자료는 XML 설정파일을 보면 애드온인지 모듈인지 위젯인지 구분할 수 있습니다.
    • 새 구조에서는 모든 플러그인이 하나의 PHP 스크립트로 자신의 이름, 의존성 관계, 라우터 규칙, 액션 목록, 트리거 목록, 설정 가능한 항목 등을 선언할 수 있게 됩니다.
    • 이 파일의 파일명은 잠정적으로 about.php라고 하겠습니다. 의미도 분명하고, 알파벳 순서상 다른 파일들보다 먼저 정렬될 가능성이 높으니까요.
  2. 새 구조의 테마는 themes 폴더에 넣고, 기존 형태의 레이아웃이나 위젯스타일, 스킨 등은 기존 경로에서 그대로 사용 가능합니다.
    • 설치된 테마 목록을 작성할 때 양쪽 경로를 모두 확인하되, 새 구조의 테마에 우선순위를 둡니다.
    • 테마는 PC/모바일/반응형 레이아웃, 각 모듈(플러그인)을 위한 PC/모바일/반응형 스킨, 위젯스타일, 아이콘 테마 등을 1개 이상 포함할 수 있습니다.
    • about.php에서 이름, 지원하는 모듈(플러그인) 목록, 설정 가능한 항목 등을 선언할 수 있습니다.
    • 사용자는 사이트 디자인 설정에서 A 테마의 레이아웃, B 테마의 게시판 스킨, C 테마의 회원스킨, D 테마의 위젯스타일, 기존 스킨 등을 자유롭게 조합할 수 있습니다.
  3. 앞으로 새로 추가하는 공통 클래스들은 common/framework 폴더에 넣습니다. classes 폴더의 기존 클래스들은 그대로 유지하되 점점 껍데기만 남기고 대부분의 메소드를 새 클래스로 넘겨주도록 합니다.
    • 테마나 플러그인과 마찬가지로, 이것도 호환성을 위해 한동안 두 가지 구조를 병용합니다. 이렇게 하면 1~2년에 걸쳐 점진적인 리팩토링이 가능할 것입니다.
    • 새로 만드는 폴더와 파일명은 가능하면 원래 의미 그대로 풀어쓰는 것을 원칙으로 합니다. (예: functionfunc로 줄이거나 librarylib로 줄이지 않습니다.) 개발자들의 줄여쓰기 관행을 이해하지 못하는 일반 사용자들을 위한 배려입니다.
  4. XE와 연동하는 다른 프로그램들과의 호환성 유지를 위해 config.inc.php를 남겨두되, autoload.php를 인클루드하는 한 줄만 남깁니다.
    • 오토로딩은 계~속 확장됩니다. 오토로딩 함수와 템플릿 외에는 어디에서도 includerequire를 직접 사용할 필요가 없도록 만들 것입니다.
    • config.inc.php가 수행하던 나머지 기능들은 common 폴더 아래의 새 스크립트들이 맡습니다.
  5. 모든 상수는 여기서 선언합니다. (사용자 설정으로 변경할 수 없는 것들)
  6. 시스템 설정 기본값은 여기서 선언합니다. (사용자 설정으로 변경할 수 있는 것들)
  7. 기존의 Context 클래스에도 예전 포맷의 설정파일을 새 포맷으로 변환하는 코드가 있는 것으로 보아, 설정파일 포맷이나 경로 변경은 성공적인 전례가 있는 일입니다.
    • 캐시 설정과 FTP 설정 등을 모두 한 군데에 합치고, slave_db가 필요하지 않은 경우 제외하는 등의 최적화 예정입니다.
    • 기존의 설정파일 구조에 의존하는 자료들을 위해, Context::getDBInfo() 메소드에서는 기존의 구조로 변환하여 제공하도록 합니다.
    • 앞으로는 설정파일에도 버전을 적용하여 나중에 구조가 또 변경되더라도 쉽게 업그레이드할 수 있도록 배려해야겠습니다.
  8. 오우삼 감독 납셨네요 ㅋㅋㅋ
  9. 자료가 수십만 개쯤 되는 사이트를 백업이라도 한 번 하려고 하면 여기에 자잘한 폴더와 파일이 너무 많아서 한참 걸립니다. 캐시 성격의 데이터를 이렇게 많이 쌓아둘 필요가 있는지 점검이 필요합니다.
  10. 모든 서드파티 라이브러리는 composer로 설치하여 vendor 폴더에 들어갑니다.
    composer로 설치할 수 없는 라이브러리는 common/libraries 폴더에 들어갑니다. (#68 참고)
  11. CSS, JS 라이브러리들은 추후 bower로 설치하도록 변경할 수도 있습니다.

게시판의 NEW/FILE/UP등의 아이콘 변경

현재 리믹스의 document 모듈은 새로 추가된, 파일이 첨부된, 업데이트된 게시물을 게시판에 표현하는 과정에서 gif 파일을 사용합니다.

해당 파일을 커스텀 가능한 HTML/CSS 코드를 사용할 수 있도록 한다면 서드파티 개발자들이 좀 더 폭넓은 선택을 할 수 있을듯 합니다.

지금까지는 스킨에서 별도로 지정하거나(스케치북 모바일) 혹은 코어를 수정했어야 했습니다.

메뉴를 수정/열람할 수 없는 문제

http://puu.sh/mvwTz/3f25250419.png

메뉴를 수정할 수 없는 문제가 있습니다. 백지로 뜨고 아무것도 못하네요. 처음 1회는 메뉴를 불러오는데 성공했으나 수정을 시도하면 백지로 바뀌고, 브라우저를 바꿔도 데이터를 로딩하질 못하는것 같습니다.

Reproduction Steps

  1. 설치 직후 로그인된 상태로 XE Edition 레이아웃에 랜딩함
  2. 관리자 메뉴 접속 버튼을 눌러 관리자 페이지 접속
  3. 돌아다니다가 관리자 페이지에서 메뉴 설정 페이지 접속
  4. 사이트맵 삭제 시도, 사이트 시작 페이지가 있어 삭제 실패
  5. 사이트맵 추가 시도, 두어번 누르다가 연속해서 3번가량 누름
  6. 사이트맵이 백지로 바뀜
  7. 다른 브라우저에서도 백지로 보임.

오류 콘솔 메세지

오류가 발생한 함수 : createTreeMarkup -- index.php:1083
TypeError: null is not an object (evaluating 'aNode[i].menuItems.list')
createTreeMarkupindex.php:1082
onSiteMapReceivedindex.php:850
successxe.min.js:254
ljquery.min.js:2:24887
fireWithjquery.min.js:2:25703
kjquery.min.js:4:5359
(익명 함수)jquery.min.js:4:9153

서버 정보

[XE Server Environment 2016-01-15]

realpath : /var/www/html
location : ko
package : XE
host : https://valkyrie.new-eden.kr/
app : nginx/1.9.9
xe_version : 1.8.15
php : 7.0.2-1+deb.sury.org~trusty+1
db_type : mysqli_innodb
use_rewrite : Y
use_db_session : N
use_ssl : always
phpext : core, libxml, openssl, zlib, bcmath, calendar, dba, fileinfo, ftp, gettext, iconv, mbstring, simplexml, soap, sockets, phar, exif, sysvmsg, sysvsem, sysvshm, xml, xmlreader, xmlwriter, zip, mysqlnd, cgi-fcgi, curl, gd, mysqli, pdo_mysql, readline, zend opcache
module : adminlogging(1.7), board(1.7.2), krzip(1.8.0)
addon : adminlogging(1.7), captcha_member(1.7), oembed(1.0)
layout : xe_official(1.7), xedition(1.9), user_layout(1.7)
widget : counter_status(1.7), pollWidget(2.0)
widgetstyle : simple(1.7)
max_file_uploads : 20
post_max_size : 8M
memory_limit : 128M

RhymiX 버전

git clone으로 클로닝 했으니 master 브랜치

말 많고 탈 많은 쉬운 설치 기능 제거

장기적으로 쉬운 설치를 라이믹스에서 자체적으로 새로 구축하는 방향이 어떨지요?

그때에는 지금 기존의 Xe자료실에서도 계속 정보를 받아오되 같은 자료가 라이믹스 버전으로 이미 올라온 상태라면 제외, 라이믹스 측에서 호환성 확인을 거치지 않았으면 제외하거나 경고문을 설치전에 띄우는 등으로 확장할 수있었으면 좋겠습니다.

더 나아가서, 이 쉬운설치 페이지에 광고를 부착해 쉬운설치 서버비용을 마련하는 수순으로 나간다면 어떨까요?

자료 업로드를 하는 개발자가 자료 페이지에 자기 광고를 올리고 싶다면 그걸 부착하고 만약 광고수익을 라이믹스 측에 기부하길 원한다면 라이믹스의 광고를 부착, ad free 를 선택하면 아무것도 안 나오는 것으로...

어떻게 생각하시나요?

일부 DB의 지원 종료를 제안합니다.

현재 Rhymix는 아래의 DB를 지원하고 있습니다.

  • MySQL 4.1 이상
    • mysql
    • mysql_innodb
    • mysqli
    • mysqli_innodb
  • CUBRID (버전 제한 없음)
  • MSSQL (버전 제한 없음)

예전에는 Oracle, PostgreSQL, SQLite도 지원했지만 일찌감치 지원이 종료된 상황입니다.

그러나 MySQL을 제외하면 테스트조차 하지 않고 있고, 사용자 수도 아주 적기 때문에 버그가 있어도 발견하기 힘들고 고치기도 힘든 상황입니다.

게다가 CUBRID나 MSSQL의 기능을 제대로 활용하고 싶어도 버전 제한이 없어서 아주 오래된 버전까지 배려해야 하는 문제가 있습니다. 예를 들어 CUBRID 사용시에는 아직도 유니코드를 지원하지 않던 7.x 버전을 배려하여 컬럼 길이를 조정해 주고 있습니다.

MySQL 지원도 약간 재검토가 필요합니다. Rhymix를 실행할 수 있는 PHP 5.3 이상의 호스팅 서버 중에 아직도 mysqli가 없는 곳이 과연 있을까요? mysql은 이제 버려도 되지 않을까요? MySQL 서버 버전도 5.0 이상으로 변경하면 훨씬 다양한 기능들을 사용할 수 있게 됩니다. 이미 많은 호스팅 업체들이 "PHP 5 + MySQL 5" 조합을 제공하고 있습니다.

그래서 아래와 같이 제안합니다.

  1. CUBRID와 MSSQL을 완전히 버리거나, 비교적 최근 버전으로 제한
    • 예: CUBRID 8.x 이상, MSSQL 2008 이상
  2. MySQL 사용시 mysql을 버리고 mysqli만 지원
    • MyISAM과 InnoDB는 여전히 선택 가능
  3. MySQL 최저 버전을 5.0.7 이상으로 변경
    • 당분간 4.1에서도 정상 작동 유지

다른 의견도 환영합니다. 만약 CUBRID, MSSQL, MySQL 4.1 사용자가 계시면 이의제기 바랍니다.

앤진엑스 리라이트 룰 추가

별도의 폴더에 설치할 수 있는 엔진엑스 리라이트 룰도 같이 제공했으면 좋겠습니다.

인스톨할 때, 웹서버가 엔진엑스라면 '엔진엑스를 사용하고 있습니다. XE 설치 경로의 nginx 폴더 내에 있는 파일을 인클루드 해주세요.

아래의 설치과정을 참조하시기 바랍니다'

식으로 띄워주는거죠.

로고 공모전 해보면 어떨까요?

따로 보상은 걸지 않더라도 XE TOWN 내에서 라이믹스 로고 공모전 한번 진행해보면 어떨까 싶습니다.

가장 많은 추천을 받은 유저의 로고를 채택하는걸로...? 아니면 심사하는 사람들이 선정하는걸로..?

문서/댓글에 대한 신고 시스템 개선안

차단(블라인드) 기능을 제안합니다.
현 시스템 구조상 단순 신고 후 관리자페이지에서 신고목록 확인 후 후속조치 하게끔 되어 있습니다.
단순 신고를 바꾸고 신고 후 자동으로 처리하게 할 수 있는 기능이 필요합니다.

신고할때 선택과 기타를 두어 어떤문제로 인해 신고를 하게 되었는지 신고자가 선택하게 됩니다.
신고 후 당일 내에 취소가능토록 조치(잘못된 신고 방지)
신고된 문서/댓글에 다른이가 신고할 시에
'어떤 사유로 신고되었습니다. 추가로 신고하시겠습니까?' 라고 알려주는 것도 좋을듯..

선택문구에 대한 부분은 관리자가 정하도록 합니다.
(기본선택지 따로 마련)

예)
음란물
광고
주제에 맞지 않음
비속어
기타(작성하세요)

일정 신고 횟수를 초과한 문서/댓글을 블라인드 처리토록 합니다.
이때, 블라인드 된 문서/댓글은 해당모듈에 그대로 남아있고
처리된 문서의 내용과 댓글에 '어떤 사유로 인한 블라인드 처리됨을 알려드립니다' 같은 표현이 나오도록 합니다.

예)
음란물 1건, 광고 1건 으로 인하여 해당 내용이 블라인드 처리되었습니다.

관리자 페이지에서는 신고목록에 뜨고 문서/댓글 제목은 그대로 표현토록 합니다
블라인드 처리된 문서/댓글은 작성자에게 알림/메일/쪽지로 통보토록 합니다.
통보 후 일정 기간 소요후 의견이 없을시에 자동 휴지통으로 넘어가도록 조치합니다.
(기간설정은 관리자가 설정토록)

블라인드 된 문서/댓글을 볼 수 있게끔 하는것도 좋을듯 합니다.
단, 누적된 신고는 열람을 금지토록 하는것도 좋을듯 하구요

게시판(모듈) 설정과 글로벌 설정

기본적으로 게시판의... 정확히는 추가기능 등의 글로벌 설정이 있습니다.

대표적으로 모바일뷰 사용, 추가기능의 에디터 관련 설정, 다운로드 포인트 등의... 그런 것들

문제는 한 번 개별 설정을 한 번하게 되면 이것을 초기화 시킬 수 있는 방법이 없습니다.

즉, 한번 게시판의 에디터 설정을 변경하거나, 모바일뷰(테스트는 안해봄.. 가물가물) 설정을 변경했으면,

다시는 관리자 설정과 에디터 설정에서의 설정 값으로 동기화 시킬 수 없다는 문제가 있습니다.

물론, 모듈 설정에서 DB 정보를 지우면 됩니다.. ( 이 방법 밖엔 없는 걸로... )

따라서.. 위와 같은 개별 설정을 하더라도, 추후 리셋할 수 있는 기능이 기본적으로 제공되면 좋을 것 같습니다. ( 혹시 이미 적용 됐는데, 제가 모르는 거라면 말씀해주세요... )

XML 쿼리 제거

예, 그리고 만약 가능하다면 XML 자체를 라이믹스에서 다룰 필요가 없었음 합니다.

퍼포먼스, 개발편의에 있어 큰 개선이 기대되지만 문제는 엄청 방대한 작업이 될 것 같네요...--;;

관리자 페이지 개선 제안 2 - 파일 관리

파일 관리에서 임시 대기 중인 파일 목록을 삭제한 이후에는 다시 새로 고침이 되면서 전체 유효한 파일이 포함된 목록으로 넘어갑니다.

즉 무의식적으로(상식적으로 그대로 임시 대기 중인 파일 목록으로 새로고침 될거라 생각하고)
관리를 하다가는 엄청난 실수를 유발할 여지가 있습니다.

조회수 중복 증가 방지에 대해서

우선 Discussion 성격이 강하긴 합니다.

현 XE는 현재 게시물 중복 조회수가 올라가질 않습니다.

예를 들어 한번 본 책도 여러번 볼수 있습니다.
한 책을 여러번 본다는 의미는 그 만큼 가치있는 책/자료라는 의미로 전달 되곤 합니다.

말 그대로 "조회한 수"

그 자체로 인정될려면 본 사람 기준으로 해서 중복이라 간주 할 필요는 없을듯 합니다.

같은 사람이 한 글을 여러번 본 조회한 것도 조회한 숫자로 인정 되어야 해당 글에 대한
최종 가치가 인정이 된다고 봅니다.

아래와 같은 코드는 기존에 알려진 팁입니다. 라이믹스에서는 어떻게 받아드려질진 모르겠지만
의견 개진 해봅니다.

xe - modules - document - document.controller.php 열고 주석 처리

    // Pass if read count is increaded on the session information
    if($_SESSION['readed_document'][$document_srl]) return false;

    // Pass if the author's IP address is as same as visitor's.
    if($oDocument->get('ipaddress') == $_SERVER['REMOTE_ADDR'])
    {
        $_SESSION['readed_document'][$document_srl] = true;
        return false;

// Pass ater registering sesscion if the author is a member and has same information as the currently logged-in user.
if($member_srl && $logged_info->member_srl == $member_srl) {
$_SESSION['readed_document'][$document_srl] = true;
return false;
}

loadFile 에 불러온 파일 내용에 대한 이름을 지정 가능하도록 제안합니다.

라이믹스에 기본으로 포함된 jQuery 는 같은 경로에서 불러올테니 문제가 안됩니다.
하지만 기본으로 포함되지 않은.. 예를 들어 jQuery mobile 의 자바스크립트를 불러온다 합시다.

모바일 레이아웃에서도 불러오고, 모바일 게시판 스킨에서도 불러오고, 레이아웃에 달아둔 위젯에서도 불러온다고 합시다.

만약 같은 파일인지 구분할 수 있다면 한 번만 불러와도 되지 않을까요?

하지만 이런 경우가 많지는 않습니다. 파일 내용을 매번 확인하기는 번거롭겠지요.
그래서 이 파일은 "jQueryMobile" 이고 버전은 "x.x.x" 이다 라고 알려줄 수 있었으면 좋겠습니다.
각각에서 같은 파일을 불러온다면 한 번만 불러오게 라이믹스가 조절 해주는 것이지요.

어려우려나요.. ㅎㅎ

아니면 보통 파일 이름이 동일할테니 is_library="true" 같은 식이면 경로 없이 파일명만 비교한다는 식이요.

독시젠으로 생성된 각 버전의 도큐멘테이션을 포함하면 어떨지요?

Manual 폴더에 독시젠으로 생성한 문서를 포함했으면 좋겠습니다. XE를 사용한지 상당히 오래 되었지만, 독시젠이라는 툴이 있는건 최근에 알았거든요.

차라리 기본적으로 개별 버전의 도큐멘테이션을 독시젠으로 생성해서 포함해주면 어떨까 싶습니다.

Admin 창에서 도움말 열 수 있는데, 도움말 문서 수정해서 'XE에 대한 기술 문서는 이곳에서' 식으로 링크를 걸어버리면 좋을 것 같습니다.

개인페이지(회원모듈 확장) 제안

개인페이지를 제공하여 사이트 내에서의 개인 공간을 구축

예) Uesr1 이라는 아이디를 가진 회원이 개인페이지를 생성하여 http://주소/user1 이라는 개인공간을 가집니다.

  • 회원당 1개의 페이지를 기본 옵션으로 둡니다.
  • 회원은 가입시 혹은 회원정보페이지에서 생성을 결정하게 됩니다.
  • 모든 회원에게 생성권한을 주거나 특정회원/그룹에게 생성권한을 줄 수 있습니다.
  • 생성된 회원에게는 스킨이나 회원메뉴를 통해 접속할 수 있는 링크가 제공됩니다.
  • 생성된 페이지는 관리자가 메뉴에 추가할 수 있으며 통합 타임라인 게시판 혹은 위젯으로 활용할 수 있습니다.
  • 페이지는 블로그/목록 으로 꾸밀 수 있습니다.
  • 첨부는 회원이 아닌 관리자가 관리토록 합니다.
  • 페이지에서의 활동은 포인트에 영향이 없도록 합니다.
  • 열람에 대한 권한은 회원에게 있습니다. 열람 권한은 비회원/회원/그룹/친구 로 나뉩니다.
  • 페이지에서의 글 작성시 일반 게시판에 게제 할 수 있는 옵션을 둡니다.
  • 카테고리를 나눌 수 있으며 카테고리 별로 따로 개제가 되거나 할 수 있습니다.

사실상 회원용 블로그 모듈같지만 제한하는 부분도 있구요
사이트에서 개인페이지를 제공하고 그 페이지들을 엮어서 하나의 페이지에 출력해주고 하면 좋을 듯 해서요
회원에게 선택권, 그리고 나만의 공간을 꾸민다는 점에서 아주 좋은 기회가 될거라고 생각합니다.

글/댓글 신고 갯수도 표현 할수 있게 해주셨으면 합니다

{$comment->get('voted_count')?$comment->get('voted_count'):0}
추천

{$comment->get('blamed_count')?$comment->get('blamed_count'):0}
비추천

{$comment->get('declared_count')?$comment->get('declared_count'):0}
신고

에서 신고만 안됩니다. 관리자 화면에서는 보이는거 같은데..스킨에서도 활용할수 있게
만들어 주시면 좋겠습니다. 제안 드려 놓습니다.

본문창/댓글창 입력창 자동 조절 기능

해당 기능이 있는데.... 자동 조절이 기본 선택으로 되어 있지 않은 이유를 유저 입장에서 잘 모르겠습니다.

굳이 선택으로 만들어야 한다면 기본은 선택이 되어 있는 것으로 되어 있으면 좋겠습니다.

보안 취약점 리포트에 관하여

지금 논할 단계는 아닌듯 하지만, 현재 XE는 보안 취약점을 리포트 받기 위한 채널을 운용하고 있습니다.

리믹스가 어느 정도 이상 활성화 되면 굳이 취약점 처리를 위한 채널이 없어도 유저들과 기여자들이 해결할 수 있겠지만, 어느 정도 규모 이하일때는 보안 취약점을 리포트 받을 수 있는 채널이 필요하다고 봅니다.

또한, XE는 인터넷 진흥원에서 주로 보안 취약점을 리포트 받고 있는데, 저희도 인터넷 진흥원과 모종의 관계를 맺는것도 중요하지 않을까 싶습니다 :)

유저 풀이 커지면 결국 전부 유저가 해결할 수 있겠지만요 =D

관리자 페이지 스킨 기능 제안

관리자들을 위한(?) 그리고 XE 아니 Rhymix가 자유도 높은 CMS 이라는 것을 알리기 위해 +ㅇ+
관리자 페이지도 스킨을 입힐 수 있으면 좋겠어요

본인 입에 맞게 관리자 페이지를 커스트 마이징한다. 옹ㅋㅋ
어떤 것 같아요? 여기서 디자인하는 것은 역시 디자이너들의 몫이거나 사용자 몫이겠죠 ㅎㅎ

사실.. 현재 제가 생각하고 있는 부분이..
완벽하게 다른 스킨을 입혀서 XE랑 전혀 다른 CMS로 탄생하는거거든요.
그래서 만약 허락을 해주신다면, XE 도움말 페이지부터 새롭게 스킨을 입히고 싶어요.
그리고 다음은 XE 설치 페이지의 스킨을 새롭게 디자인해서 공헌하고 싶네요. (할 수 있는게 ㅎㅎ..)

이전 옷을 그대로 입는 게 아니라 새로운 옷도 입으면 보다 기분이 업 될 것 같고,
이 프로젝트의 사기(?)를 높여주어 개발이 성공적으로 이루었으면 하는 바람으로 남깁니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.