라이믹스/Next 라이믹스

-

next는 라이믹스 2.0 버전에 들어갈 다소 과격한 변경사항들을 미리 테스트하는 곳입니다.

모험심이 강하신 분은 next를 써보셔도 되지만, 이번 여름까지는 웬만하면 develop에 머무시기를 권합니다.^^

 
— 깃허브 기진곰님 답변 중

라이믹스 next 브랜치

라이믹스 2.0의 전신격인 Next 브랜치(여기서는 Next 라이믹스라 칭한다.)에 대해 다양한 내용들을 적는 문서입니다.

패치 방향

과격한 패치와 함께 오류 발생시 복구(롤백)하는 것이 아닌, 추가 패치를 통해 해결하는 것을 목표로 하고 있다. 따라서 기존 라이믹스보다 많이 불안정하다.[1]

추가될 기능들

라이믹스 2.0에 추가될 기능들이다.

모바일 푸시 기능

FCMAPNs을 이용해 알림을 모바일 기기에서 받을 수 있도록 하는 기능.

처음에 다음과 같은 요소를 서버로 보낸다.

  • user_id : 아이디
  • password : 비밀번호
  • device_token : 기기 고유 값
  • device_model : 기기 모델명

그러면 서버에서는 아래의 값을 JSON 형식으로 응답한다.

  • member_srl : 사용자 고유번호[2]
  • user_id : 아이디
  • user_name : 유저명
  • nick_name : 닉네임
  • device_key : 기기 값(기기에 해당 값을 가지고 있다가 id와 비밀번호 대신에 해당 값을 사용하여 로그인한다.)[3]

FCM이나 APNs의 API값 등을 입력한다.

알림센터 기능 강화

알림센터에서 설정한 알림만 전송된다. 기존에 알림센터에서 일부 알림만 원하는 경우 설정했던 것 처럼, 알림도 동일하게 설정이 가능하다.

모바일 푸시 기능 추가 - lcy7747님


짧은 주소 개선(라우터 기능)

라이믹스XE는 짧은 주소를 사용 할 수 있다. 예를 들어 https://example.com/note/213과 같이 짧게 표현이 가능하다.[4]

하지만 게시판 설정이나 게시글 작성시 주소 뒤에 &act=dispBoardWrite와 같은 act가 붙게 된다. 이때 act가 붙는 경우, 짧은 주소를 사용 할 수 없다. 그래서 https://example.com/index.php?mid=note&act=dispBoardWrite로 접속해야 글쓰기가 가능해진다.

하지만 라우터 기능을 통해 글쓰기 페이지 등에서도 짧은 주소의 사용이 가능해진다. 예를 들어 https://example.com/note/213/edit나, https://example.com/@아이디 이런 형태도 사용이 가능해진다.

또한 SEO에 영향을 주지 않도록, 긴 주소로 접속시 짧은 주소로 리다이렉트 될 수 있게 된다.

라우터(Router) 기능 추가 - 기진곰님

썸네일 화질 설정

썸네일 생성시 화질을 설정 할 수 있다. 기본값은 75%이며, 50%부터 100%까지 5% 단위로 설정 할 수 있다.

기존에는 썸네일 생성시 화질이 조절되지 않았지만, 이제는 화질을 설정 할 수 있다.

DB 연동 기능 강화

-

라이믹스 역사상 최대 규모의 PR인 것으로 추정됩니다. ㅎㅎ

 
— PR 내용 중 기진곰님 내용 중

현재 mysqli[5] 방식으로 DB에 접속한다. 이러한 상황에서 mysqli 방식에서 PDO 방식으로 변경한다.

또한 XML 스키마, 쿼리 해석 엔진 구현을 통해 다양한 기능들도 지원한다. 그리고 XML을 사용하지 않더라도 커스텀 쿼리를 실행 할 수 있게 된다.

마지막으로 라이믹스가 설치된 DB 이외의 DB에 임의 접근 후 쿼리 실행이 가능해진다.

장점

진입장벽 하락

대부분의 프레임워크들도 PDO 방식으로 DB에 접속하기 때문에, 진입장벽이 낮아진다. Prepared Statement 등의 기능을 쉽게 사용 할 수 있으며, 데이터를 하나 하나씩 로드 후 처리 할 수 있게된다.

PHP 캐시 저장 불필요

XML 스키마, 쿼리 해석 엔진을 구현함으로써 코어에서 설정된 캐시 방법대로 캐시를 할 수 있게된다.

커스텀 쿼리 실행

커스텀 쿼리 실행시 테이블 명 앞에 접두사[6] 를 자동으로 붙힘으로써 개발이 용이해진다. 또한 디버그에서 커스텀 쿼리를 실행 기록을 볼 수 있게된다.

타 DB 접근 후 쿼리 실행

기존에는 라이믹스가 설치된 DB에서만 쿼리를 실행 할 수 있었기 때문에 연동 같은 기능들은 따로 설정해 주어야 했지만, 이제는 라이믹스 내에서 처리가 가능해진다.

알림 설정

이메일 전송 방식 경고 메세지

PHP mail() 방식을 선택시 아래의 경고 메세지가 뜬다.

-

PHP에 내장된 mail() 함수를 사용합니다. 발송 성공률이 매우 낮습니다.
이 옵션은 추후 지원되지 않을 수 있으니, 가능하면 다른 방식을 선택하시기 바랍니다.

PHP mail() 방식 보다는 메일 전송 서비스 api를 권장한다.

보안 설정

SameSite 쿠키

다른 도메인끼리 쿠키를 전송 할 수 있도록 SameSite 쿠키를 설정 할 수 있다. 크롬 버전 80 이전에는 기본값이 None이었으나, 버전 80 이후부터는 기본값이 Lax로 변경됨에 따라 속성을 설정하지 않은 경우, 속성이 자동으로 Lax로 부여된다.

Lax나 Strict를 사용하는 경우, 결제 모듈 등 서드파티 사용시 문제가 발생 할 수 있다. 그렇기 때문에 None으로 설정해야 한다.

라이믹스에서도 SameSite 쿠키를 설정 할 수 있으며, 기본값인 표기하지 않음을 설정하는 경우, 크롬 버전 80 이상부터는 Lax 취급을 한다.

물론 서버단(Apache2/Nginx)에서 설정이 가능하지만, 복잡하고 웹호스팅 사용시 설정이 불가능하기 때문에 라이믹스에서 설정 할 수 있도록 추가되었다.


버그들

과격한 패치들이 있기 때문에 버그들이 창궐하고 있다.

게시판 일부 기능 사용 불가 버그

아래의 내용은 2020년 6월 13일에 테스트한 결과입니다.

현재와 결과가 다를 수 있습니다!

게시판 설정 중 추가 설정 메뉴(/index.php?mid=bugs&act=dispBoardAdminBoardAdditionSetup), 게시글 작성 페이지(/index.php?mid=bugs&act=dispBoardWrite) 접속시 아래의 오류가 뜬다.

-

서버 오류
Error #0 "__clone method called on non-object" in modules/file/file.model.php on line 283
common/framework/debug.php:663

디버그 내용 중 오류 내용은 아래와 같다.

-

01. Warning: Creating default object from empty value

modules/communication/communication.model.php:32
modules/communication/communication.controller.php:858
classes/module/ModuleHandler.class.php:1266
classes/module/ModuleHandler.class.php:134
index.php:51

02. Warning: Creating default object from empty value

modules/communication/communication.model.php:32
modules/communication/communication.controller.php:858
classes/module/ModuleHandler.class.php:1266
classes/module/ModuleHandler.class.php:134
classes/context/Context.class.php:1566
common/framework/debug.php:663
common/framework/debug.php:542


메인 페이지 접속시 오류 발생

아래의 내용은 2020년 6월 14일에 테스트한 결과입니다.

현재와 결과가 다를 수 있습니다!

메인 페이지 접속시 다음과 같은 오류가 발생한다.

-

_getContent method is not exists modules/page/page.view.php:56

디버그 오류 창에서는 위의 오류와 함께 아래의 오류가 나온다.

-

02. Warning: count(): Parameter must be an array or an object that implements Countable
widgets/content/content.class.php:206 widgets/content/content.class.php:123 modules/widget/widget.controller.php:390
modules/widget/widget.controller.php:471
modules/widget/widget.controller.php:288
modules/widget/widget.controller.php:266
modules/widget/widget.controller.php:250
classes/module/ModuleHandler.class.php:1266
classes/display/DisplayHandler.class.php:80
classes/module/ModuleHandler.class.php:1180
index.php:52

여담

라이믹스 2.0 기념 로고가 있다. 물론 공식 로고는 아니고 유저가 만든 로고이다.

라이믹스 2.0 로고 비공식 이니셜.jpg

라이믹스 2.0 로고 비공식 full.jpg

각주

  1. 개발 버전인 develop 브랜치보다도 더욱 불안정 하기 때문에 실서비스를 하는 경우, 절대로 사용하면 안된다.
  2. RXE에서는 사용자별로 고유 번호가 존재한다.
  3. 기기에 비밀번호를 저장하지 않는다.
  4. 해당 주소는 https://example.com/index.php?mid=note&document_srl=213를 줄인 것이다.
  5. 라이믹스는 mysqli 방식만 지원한다.
  6. rx_ 같은 것들