로그인

검색

Extra Form
추천지수 8

라이믹스 2.1 버전을 릴리즈합니다.

 

작년 말에 공지한 대로 라이믹스 2.1은 PHP 7.2 이상에서만 사용할 수 있으며, PHP 7.4 이상을 권장합니다. 구 버전이나 XE 1.x에서 업그레이드하실 경우 PHP 버전 차이에 주의하시기 바랍니다. 구 버전에서 정상 작동하던 모듈, 애드온, 위젯 등이 PHP 7.2 이상에서 오류를 일으킨다면 BaseObject 문제일 가능성이 높습니다. 오래 전 XE 1.9에서 변경된 사항이므로 대다수의 정상적인 자료는 이미 수정되었거나, 수정 방법이 커뮤니티에 알려져 있을 것입니다.

 

 

라이믹스 2.1의 새 기능과 개선점

  • 여러 도메인을 사용하는 사이트에서, 특정 게시판이나 페이지는 특정 도메인에서만 사용할 수 있도록 제한하는 기능
    • 지정하지 않은 도메인으로 접근하면 마치 존재하지 않는 것처럼 404 에러를 표시합니다.
  • 구 버전의 코어에서 배포하였으나 파일명 변경, 통폐합, 폐지 등으로 더이상 필요하지 않은 파일과 폴더를 자동으로 파악하여 정리하는 기능
    • 오래된 파일이 필요한지 아닌지 헷갈릴 때, 이 기능을 사용하면 자신있게 삭제할 수 있습니다.
  • 최신 모바일 기기나 이미지 편집 프로그램이 생성하는 AVIF 및 HEIC 이미지를 JPG로 변환하여 저장하는 기능
    • ImageMagick 7 이상의 "magick" 명령이 서버에 설치되어 있어야 합니다.
  • PHP의 GD 라이브러리로 다루기 너무 큰 이미지는 ImageMagick을 사용해서 크기 제한을 적용하는 기능
    • 위와 마찬가지로 "magick" 명령이 필요합니다.
    • 크기 조절이나 변환하는 데 시간이 많이 걸릴 수 있습니다.
  • 동영상 첨부파일을 제한하거나 최적화하여 서버 용량과 트래픽을 절약하기 위한 다양한 옵션
    • 가로x세로 크기 및 재생 시간 제한
    • mp4 이외의 포맷을 업로드한 경우 mp4로 변환하는 기능
    • mp4 포맷이라도 일정한 화질로 무조건 재인코딩하여 용량을 줄이는 기능
    • ffmpeg 연동이 필요합니다.
  • 쪽지함 검색 기능 추가 (#911#1112)
    • 커뮤니케이션 모듈 기본 스킨에는 검색창이 추가되었으나, 다른 스킨 사용시 검색창을 직접 만들어 주어야 합니다.
  • 회원 모듈에 URL(mid)를 고정적으로 부여하여 레이아웃, URL 구조 등을 일관성있게 유지할 수 있도록 지원 (#1806#1896#2122)
    • 기존 사이트는 회원 모듈 설정에서 URL을 확인하고 "강제 적용"을 체크해야 적용됩니다.
    • 해당 기능 사용시 커뮤니케이션 모듈(쪽지함, 친구 기능) 및 알림센터 설정 화면도 회원 모듈의 URL(mid)를 사용합니다.
  • 수정하여 업로드한 템플릿을 즉시 변환하지 않고 1~3초 기다리는 옵션 제공
    • 해외 서버 등 업로드가 느린 환경에서 업로드 도중 방문자가 있을 경우, 반쪽짜리 템플릿을 변환하려다 오류를 뿜는 불편을 줄일 수 있습니다.
  • reCAPTCHA를 대신할 수 있는 Cloudflare Turnstile 스팸방지 API 지원 @Lastorder-DC (#2008#2112)
  • 스팸필터 모듈이 확장변수 내용도 검사하도록 변경 (#2051)
  • 회원가입 추가 항목(확장변수)으로 국가, 언어, 표준 시간대 입력란을 생성할 수 있도록 지원 @dewekk (#2089)
  • 게시물이 많은 사이트에서 RSS 발행시 count(*) 쿼리와 관련된 서버 부하 대폭 감소
  • 헤더 스크립트나 푸터 스크립트에 <html>, <head>, <body> 등 불필요한 태그 입력시 자동 삭제
    • 타 사이트의 예제를 복붙하다가 사이트의 태그 구조가 깨지는 것을 막아 줍니다.
  • 신고 기능과 관련된 베트남어 번역 추가 (제공: EOHQ)
  • argon2id 비밀번호 암호화(해싱) 알고리즘 지원
  • 쪽지함에 짧은주소 지원

 

개발자를 위한 새 기능 및 변경사항 안내

  • 모듈 네임스페이스 내에 있는 클래스 파일명은 대소문자를 구분하는 것을 기본으로 결정
    • 폴더명은 하위호환성을 위해 소문자 그대로 유지합니다.
    • 예) Rhymix\Modules\Example\Controllers\HelloWorld 클래스는 modules/example/controllers/HelloWorld.php 파일에 작성합니다.
    • admin 모듈이 네임스페이스 방식으로 전면 개편되었고, Rhymix Framework의 파일명도 대소문자를 구분하도록 바뀌었으니 참고하세요.
    • 라이믹스 2.0.x 과도기 방식처럼 소문자만으로 이루어진 파일명도 계속 지원하나, autoload할 때 조금 비효율적입니다.
  • 최상위 폴더에 있던 composer.json과 vendor를 common 폴더 안으로 이동
    • 모듈이나 애드온 등을 개발할 때 composer를 사용하더라도, 코어의 composer.json이나 vendor 폴더를 본의 아니게 수정하는 일을 피할 수 있습니다. (common 폴더는 서드파티 자료가 들어가지 않는 위치이므로)
    • 각각의 모듈이나 애드온은 자신의 경로 아래에서 composer를 사용하는 것을 권장합니다.
  • 외부 요청을 위한 Rhymix\Framework\HTTP 클래스 추가
    • 개발이 중단된 Requests 대신 Guzzle 라이브러리를 사용하고, 기존의 FileHandler::getRemoteResource()와 FileHandler::getRemoteFile()도 내부적으로 HTTP::request()를 사용하도록 바뀌었습니다.
    • Guzzle의 API를 거의 그대로 사용하므로 다양한 옵션을 지원하고, 요청이 실패한 경우에도 응답 코드 등 자세한 정보를 얻을 수 있습니다.
    • 비동기(async) 요청, 여러 URL 동시 요청을 지원하므로 외부 API와 연동할 때 시간을 절약할 수 있습니다.
    • 일반적인 HTTP/HTTPS 프록시뿐 아니라 SOCKS5 프록시도 지원합니다. 외부 요청시 서버 IP를 숨기는 데 도움이 됩니다.
  • SCSS 컴파일러를 최신 버전으로 업데이트
  • 코어에 포함하여 배포하던 cacert.pem을 composer/ca-bundle 패키지로 대체하여 업데이트 편의 도모
  • 디버그 패널에서 동일한 쿼리나 오류는 한 번만 표시하고, 발생한 횟수를 보여주는 편의 기능 추가
  • XML 쿼리에서 SQL  date 타입의 포맷(YYYY-MM-DD hh:mm:ss)으로 기본값을 입력할 수 있는 default="timestamp()" 문법 지원
    • XML 스키마에서 SQL date 타입을 사용하려면 type="\date"로 선언하면 됩니다. type="date"는 XE용 자료와 호환되도록 char(14)로 생성됩니다.
  • zdate(), ztime() 등 시간을 처리하는 함수에서 SQL  date 타입의 포맷(YYYY-MM-DD hh:mm:ss) 및 ISO 8601 포맷(표준 시간대 정보 포함)도 기존의 14자 포맷과 동일하게 지원하여, 표준 포맷을 편리하게 사용할 수 있도록 지원
  • 실험적으로 jQuery 3.x를 선택할 수 있도록 지원
    • 관리자 화면에서도 아직 오류가 많아서, 실사용은 권장하지 않습니다.
  • 모듈에서 $this->copyResponseFrom($다른모듈)을 사용하여 다른 모듈, 다른 액션의 실행 결과를 그대로 가져올 수 있도록 지원
  • 자동 로그인시 member.doAutoLogin (after) 트리거 추가 @Waterticket (#2076#2087)
  • 파일 업로드시 file.insertFile (before) 트리거에서 포맷을 변환하거나 최종 저장 위치(save_path = uploaded_filename)를 지정할 수 있도록 지원
  • getUrl() 및 관련 함수에 2차원 이상의 배열을 넘길 수 있도록 지원 (#2123)
    • getUrl(['foo' => 'bar']) → index.php?foo=bar
    • getUrl(['foo' => ['bar', 'bazz']]) → index.php?foo[0]=bar&foo[1]=bazz
    • getUrl('foo', 'bar', 'baz', 'rhymix') → 키/값 구분 없이 나열하는 이런 문법은 더이상 권장하지 않습니다.
  • 승인, 거부, 미인증(메일 인증 미완료) 등 회원 상태를 구체적으로 표시하는 status 컬럼 추가 (#2124)
    • 지금 크게 달라지는 것은 없으나, 확장성을 고려하여 스키마를 변경했습니다.
    • 로그인 허용 여부는 여전히 denied 컬럼으로 판단할 수 있습니다.
  • AJAX 기능 강화
    • 서버단에서 Exception이 발생할 경우 항상 -2를 반환하도록 일관성 강화 (일반 오류는 -1)
    • exec_json()에서 네트워크 오류 발생시 무조건 표시되던 AJAX communication error 팝업을 막을 수 있도록 지원 (#2108)
      • callback_error로 지정된 함수에서 false를 반환하면 됩니다.
    • exec_xml()은 더이상 권장하지 않습니다.
  • DB 클래스 개선
    • begin()에 대한 alias로 beginTransaction()을 추가
    • connect() 및 disconnect() 메소드를 추가하여 DB 커넥션 상태를 직접 관리할 수 있도록 지원
    • 라이믹스 2.0에서 지원하지 않았던 prefix, use_prepared_statement 등 몇몇 DB 속성들을 읽기 전용으로 제공
      • 사용을 권장하지는 않습니다. 정식 지원하는 방식으로 커스텀 쿼리를 사용한다면 prefix를 알 필요가 없습니다.
  • config.php에서 session.lifetime 설정에 0보다 큰 값을 입력한 경우, 기본값인 8시간(28800)을 적용하지 않고 설정값 그대로 사용하도록 변경
  • DocumentModel::getDocumentList() 호출시 페이징이 필요하지 않으면 page를 0으로 지정하고 offset을 사용하여 count(*) 쿼리를 피하는 방법 제공
  • 로그인하지 않은 상태에서도 <meta> 태그에 항상 CSRF 토큰을 넣도록 변경
  • E_DEPRECATED 오류를 숨기지 않도록 변경
  • SVG 파일 업로드시 보안상 문제가 될 수 있는 태그 필터링 강화
  • X-Frame-Options 및 X-Content-Type-Options 헤더를 전송하는 보안 설정 추가

 

버그 수정

  • 아이디, 이메일 주소 등 여러 가지 로그인 방법을 제공하더라도 일부 로그인 폼에서는 이메일 주소만 인식하는 문제 수정 (#2044#2074)
  • 스크립트 합치기 기능 사용시 중간에 낀 CSS @import가 동작하지 않는 문제 수정 (#2052)
  • 알림센터의 수신 거부 팝업에 레이아웃이 잘못 적용되는 문제 수정 (#2058)
  • 모듈 복사시 mid가 규칙에 맞지 않으면 적절하지 않은 에러 메시지가 표시되는 문제 수정 (#2067)
  • 전체공지로 설정된 글에 mid 없이 접근할 경우, 소속된 게시판의 mid를 찾아가지 못하는 문제 수정 (#2072)
  • 일부 정상적인 hwpx 파일을 업로드하면 보안정책상 허락되지 않는다고 표시되는 문제 수정 (#2077)
  • 디버그 패널 설정과 무관하게 항상 에러 내용이 표시되는 문제 수정 @dewekk (#2078)
  • 캐시 파일 손상시 회원 포인트가 0으로 초기화되는 문제 수정
  • 댓글 신고 취소시 트리거에서 document_srl이 잘못 전달되는 문제 수정 (#2080)
  • 설문조사 항목 추가 후 트랜잭션 커밋이 되지 않는 문제 수정 @BOBODDO @nemorize (#2081#2090)
  • SMS 발송 중 일어난 오류를 기록하는 과정에서 protected 속성에 접근하는 문제 수정
  • SCSS 컴파일시 전달한 변수에 false, null, 빈 문자열 등이 포함되어 있으면 컴파일되지 않는 문제 수정 (#2085)
  • 스팸 키워드 때문에 임시저장이 실패하더라도 사용자에게 알려주지 않아 데이터가 유실될 수 있는 문제 수정 (#2088)
  • 설문조사 항목을 입력하지 않고 폼을 제출하면 PHP count() 오류 수정 (#2093)
  • 커뮤니케이션 모듈의 page 파라미터가 다른 메뉴 링크에도 붙는 문제 수정 (#2094)
  • 모든 형태의 짧은주소 사용시 로그인 후 무한 리다이렉트가 발생할 수 있는 문제 수정  @dewekk (#2095)
  • 그룹을 선택하지 않고 회원 일괄 수정시 PHP count() 오류 수정 (#2097)
  • 오류 표시(message) 모듈에서 설정한 모바일 스킨이 적용되지 않는 문제 수정  (#2098)
  • 권한이 없는 메뉴에 하위 메뉴가 있을 경우 빈 항목이 표시되는 문제 수정 (#2099)
  • 설문조사 종료 후에도 항목을 추가할 수 있는 문제 수정 (#2103)
  • 비회원 글쓴이의 닉네임, 홈페이지 등이 이중으로 인코딩되는 문제 수정
  • 회원정보의 홈페이지 항목에 한글 도메인 등 IDN을 입력할 수 없는 문제 수정 (#2111)
  • 메일 발신자 주소에 기본값을 사용하려고 해도 Reply-To 주소로 덮어씌워지는 문제 수정 (#2115)
  • 문서나 댓글 요약을 추출할 때, 일부 에디터에서 작성한 내용이 빈 칸 없이 붙어버리는 문제 수정 (#2116)
  • 비밀글, 비밀댓글 등 열람 권한이 없는 곳 아래에 댓글을 작성할 수 있는 문제 수정 (#2117)
  • escape되는 특수문자가 많은 글을 휴지통으로 이동할 수 없는 문제 수정
  • CLI 환경에서 일부 Context 변수가 세팅되어 있지 않은 문제 수정
  • 페이지 모듈에서 페이지 타입이 항상 영문으로 표시되는 문제 수정
  • 60자를 초과하는 비밀번호 암호화(해싱) 알고리즘 사용시, 비회원이 작성한 글이나 댓글의 비밀번호가 잘못 저장되는 문제 수정
  • 동일한 회원의 포인트를 동시에 여러 곳에서 변경할 경우 오차가 발생하는 문제 수정
  • 분류가 필수인 게시판에서 category_srl을 0으로 지정할 수 있는 문제 수정 (#2119)
  • XEDITION 레이아웃의 회원 메뉴에서 불필요한 변수 제거
  • 모든 형태의 짧은주소 사용시 게시판 글읽기 화면에서 comment, page 등의 변수를 자동 삭제하는 타이밍을 앞당겨 깜빡임 감소
  • 회원가입 후 이전 화면으로 돌아가지 않고 무조건 회원정보 화면으로 가는 문제 수정
  • 설치 직후 일부 코어 모듈은 여전히 업데이트가 필요한 상태인 문제 수정
  • PHP 8.2 환경에서 발생하는 Warning 및 Deprecated 오류 다수 수정 @Waterticket (#2064#2066#2068)

 

정리

  • Object 클래스 완전 제거 (라이믹스가 지원하는 모든 PHP 버전에서 사용 불가)
  • 라이믹스 프레임워크와 주요 모듈의 빈 줄 공백문자 처리 방법을 통일 (.editorconfig 이용을 적극 권장합니다.)
  • 관리자 대시보드의 알림 표시 순서 정리
  • 중복되는 XE 저작권 표기와 클래스 하단 주석 제거
  • 설문조시 위젯 스킨에서 불필요한 분기 제거 (#2107)
  • 파일 모듈의 이름을 일관성있게 통일 (#2120)
  • 주요 모듈의 클래스명이 모두 대문자로 시작하도록 통일 (예: memberModel → MemberModel)
  • 사용을 권장하지 않는 기능 deprecated 처리
    • exec_xml() 함수 deprecated 처리, exec_html() 호출시 콘솔 에러 메시지 변경 (#2109)
    • 레이아웃 소스 편집 기능은 이미 편집된 레이아웃에서만 제공하고, 신규 편집은 불가하도록 변경 (#2121)
    • 구 버전에서 커스텀 쿼리에 종종 사용되던 DB 클래스의 _query() 및 _fetch() 메소드를 deprecated 처리
    • Context::convertEncodingStr() 및 관련된 메소드들을 deprecated 처리
  • IE를 위한 특별한 조건들 삭제
    • CSS/JS 로딩시 targetie 속성 지원 중단
    • 구 버전의 플래시 업로더 지원과 관련된 코드 삭제
    • jQuery 1.x 삭제
  • 기타 불필요한 기능 삭제
    • 파일 캐시, wincache, xcache 삭제
    • XE 구 버전의 mobileXE 애드온을 블랙리스트에 추가하고, 게시판 및 페이지 모듈의 WAP 클래스 삭제
    • DisplayHandler의 gzip 기능 삭제

 

 

https://rhymix.org/news/356 

Who's 꿀팁관리소장

profile
라이믹스로 커뮤니티 사이트를 운영하는 비개발자 운영자 입니다.
파트너쉽 맺으실 사이트 운영자분 환영합니다.
5 추천

라이믹스 스토리(48)

라이믹스를 주제로 한 이야기가 게시됩니다.

  1. read more
  2. 라이믹스 2.1.0 업데이트 2

    Date2023.06.22 Views1166 Votes5
    Read More
  3. Read More
  4. 라이믹스 2.0.24 업데이트

    Date2022.12.21 Views992 Votes3
    Read More
  5. 라이믹스 2.0.23 업데이트 1

    Date2022.10.31 Views861 Votes4
    Read More
  6. 라이믹스 2.0.22 업데이트 (보안패치) 1

    Date2022.08.16 Views860 Votes4
    Read More
  7. Read More
  8. Read More
  9. Read More
  10. Read More
  11. 라이믹스 2.0.20 업데이트

    Date2022.03.22 Views824 Votes3
    Read More
  12. Read More
  13. Read More
  14. Read More
  15. Read More
  16. Read More
  17. Read More
  18. Read More
  19. Read More
  20. Read More
  21. 라이믹스 2.0.14 업데이트 배포

    Date2021.08.05 Views309 Votes3
    Read More
Prev 1 2 3 Next
/ 3