이전에 작성한 https://xetown.com/topics/1774989 게시글을 보고 라이믹스를 활용하기 위한 공부방법을 쪽지로 문의주신분이 계시기에, 저 또한 누군가를 알려줄 정도의 수준은 아니지만.. 라이믹스를 좀더 심화하여 사용하고 싶으신 분들을 위해 이 글을 작성합니다.

 

 

라이믹스를 사용함에 있어 무언가를 공부하고 싶어도 무엇을 해야 하는지 막막한 분들이 많으실거라 생각합니다.

어떤 경우에 어떤것을 집중적으로 공부해야 하는지 대략적인 가이드 입니다.

 

 

1 - HTML & CSS

웹 페이지의 뼈대와 스타일 입니다. 레이아웃이나 게시판 스킨등 에서 출력되는 내용들의 모양과 위치를 잡아주고 꾸며주는데 주로 사용 됩니다. 기본적으로 HTML, CSS는 어느정도 숙지 하셔야 원하는 스킨등을 만드실 수 있습니다.

제가 추천하는 공부방법으로는 마음에 드는 레이아웃이나 스킨을 골라서 더 내 마음에 쏙들게 수정을 거듭 해보는것 입니다.

혹은 Bootstrap, UIKIT 같은 디자인 프레임워크를 이용하면 쉽게 멋진 레이아웃이나 게시판 스킨을 만들 수 있습니다.

 

 

2 - Javascript (Jquery)

사용자 화면에서 수행되는 작업 입니다. 화면을 동적으로 작동하게 하거나 입력한 값을 필터링 하거나, RX/XE의 특정한 액션을 호출하는 등 아주 많은 분야에 사용 됩니다. 더 상세한 예를 들자면 특정한 값이 있는 경우와 없는경우에 따라 화면의 구성을 다르게 해주거나 혹은 글작성시 특정 입력칸에 자동으로 원하는 값을 넣어주는 등 활용 예시는 너무나 다양 합니다.

Jquery의 경우 Javascript를 좀더 쉽게 접근하여 간단하게 처리할 수 있도록 해줍니다.

최근에는 Jquery등을 사용하지 않으려는 개발 트랜드도 있지만, XE/RX의 경우 Jquery가 이미 내장되어 있습니다.

어차피 내장되어 있는거 Javascript를 배우면서 Jquery로 처리하는 방법을 함께 배우시면 개발시간이 많이 줄어듭니다.

또 다른 특징으로는 사용자 화면에서 수행되는 만큼 사용자 기기의 성능을 사용하며, 조작이 가능하기에 보안과 관련된 부분에서는 적절한 방법으로 코드를 작성하는것이 중요합니다. (물론 XE/RX 내장함수를 경유한다면 어차피 코어단에서 적절히 처리해주긴 합니다.)

추천하는 공부 방법으로는 무언가 원하는 기능을 직접 만들어 보는것 입니다. 특히 HTML 요소(엘리먼트) 및 속성(ATTR) 등을 다루는 방법을 중점으로 공부하시면 도움 됩니다. 또한 변수, 배열, 조건문, 반복문, 형변환, 함수만들기, 함수사용 같은 기본적인 부분은 확실히 숙지하는것이 좋습니다. 위의 모든 부분들은 원하는것을 만드려고 시도하다보면 자연스럽게 터득하게 됩니다.

자바스크립트 및 제이쿼리를 사용할때 console.log(변수 혹은 배열) 기능을 적극 활용하면 개발이 편합니다.

 

 

3 - PHP

서버에서 수행되는 작업 입니다. 보통의 경우 데이터베이스와 연계되어 사용되는 경우가 많습니다.

예를들어 지난 1달간 자유게시판에 아무개가 작성한 댓글수를 구하려고 한다면 이것은 PHP에서 처리해야 됩니다.

데이터베이스에 접근하여 정보를 조회하고 입력, 수정하는것은 서버에게 권한이 있기 때문에 PHP가 처리하는것 입니다.

우리가 사용하는 대부분의 모듈과 애드온들은 PHP를 핵심으로 작성되어 있습니다.

만약 무언가 원하는 기능을 만드는데 위의 Javascript (Jquery) 만으로 해결이 안되는 시점이 온다면 그때가 PHP를 활용해야 되는 시점 입니다.

만약 자바스크립트 및 제이쿼리를 통해 기초를 다지셨다면 간단한 모듈이나 애드온 부터 뜯어서 요리조리 수정해가며 테스트 해보는것이 공부에 도움 됩니다. 언어 표현의 방법이 조금씩 다를뿐 기본적인 맥락은 Javscript와 별반 다를것은 없습니다.

<pre>{@ print_r(변수 및 배열) }</pre> 기능을 활용하면 개발시 많은 도움이 됩니다.

예를들어 {$logged_info->nick_name} 을 사용하여 현재 로그인한 회원 닉네임을 출력한다면 <pre>{@ print_r($logged_info) }</pre> 라고 작성 하였을때 해당 로그인 회원의 모든정보를 확인 가능합니다.

원하는 값이 들어있는 배열(변수)의 이름을 확인하거나, 값이 존재하는지, 맞는지 등에 활용 합니다.

 

라이믹스/XE 에는 수 많은 내장함수가 존재 합니다. 내가 원하는 기능과 비슷한 모듈이나 애드온에서 어떤 내장함수를 어떤 필수값을 넣어서 호출하는지, 결과는 어떤 형태로 반환되는지 등을 분석하시면 작동방법에 대해 많은 이해가 될것 입니다.

스킨단에서 작업시 템플릿 언어로는 중괄호 표현이 불가하여 자연스럽게 if-else 및 반복문의 사용이 어렵습니다.

이때는 PHP문법 <?php ?> 과 템플릿문법 {@ } 에서 Context::get('val'); Context::set('val',$val); 을 사용하면 PHP와 템플릿간 배열 및 변수를 자유롭게 전달 가능합니다.

 

 

4 - SQL QUERY (몰라도 큰 상관 없지만 안다면 좋음)

데이터베이스를 운영하는 툴은 다양하게 있습니다. 라이믹스/XE 에서는 MYSQL 을 사용 합니다.

PHP와 데이터베이스가 정보를 요청하고 교환하고 처리하기 위해서는 MYSQL에서 사용하는 SQL QUERY 를 이용 합니다.

예를들어 조회는 SELECT , 새로 입력은 INSERT , 수정은 UPDATE 등의 형식이며 WHERE 같은 조건을 주거나 ORDER BY 같은 정렬 등을 지원합니다. (SQL쿼리는 아주 간단한 쿼리부터 다른 테이블을 참조해서 비교하고 지지고 볶고 하는 아주 복잡한 쿼리까지 다양합니다.)   라이믹스나 XE의 경우 모듈 하위의 queries, schemas를 참조하여 작동 합니다.

 

 

★제일중요 - 검색과 올바른 질문

위의 모든 부분을 <잘> 알아야 될 필요는 없다고 생각 합니다. 올바른 검색 키워드만 뽑아 낼 수 있다면 대부분의 해결방법은 이미 인터넷의 고수 개발자분들이 블로그나 포럼등에 흔적을 남겨 두었습니다.

 

예를들자면

3번째 <span> 요소의 굵기를 바꾸고 싶다 ? => jquery n번째 요소 스타일 변경

아이프레임 높이를 화면 꽉 차게 하고 싶다? => jquery iframe width height 100%

게시글 제목의 특정 문자를 마스킹 하고 싶다? => PHP 특정문자열 치환

 

이런식으로 내가 원하는 기능을 사용하는 언어를 앞에넣고 간략하게 검색해본다면 쉬운 해결방법이 많이 나오게 됩니다.

(사실 저는 코드 짜는 시간만큼 검색을 하고 있는것 같습니다 ㅋㅋ..)

물론, 상황에 맞는 검색어를 적절하게 뽑아내려면 아는것이 조금이라도 많다면 더 유리 합니다.

 

또한, 같은 기능을 만들어도 어떤 언어를 이용할지 적절한 선택이 가능하여야 합니다.

예를들어 관리자 이외에는 게시글의 아이피 주소를 ***로 보이게 하는 기능을 만드는데 자바스크립트로 만든다면 원본 IP가 노출될 수 있겠지요? 자바스크립트는 사용자 기기에서 처리하는것이라 조작이 가능할테니 애초에 PHP에서 마스킹 처리를 해주어야 할 것 입니다.

 

CHAT-GPT의 경우도 코드를 짜는데 좋은 보조수단이 될 수 있으나 엉뚱한 해결책이나 무쓸모 코드를 제공하는 경우가 많기에 CHAT-GPT가 작성한 이 코드가 옳은가? 를 판별 가능한 능력을 필요로 합니다.

 

만약 검색으로도 해결이 되지 않는다면 XETOWN의 질문게시판을 이용하는것도 좋습니다.

다만, 문제가 일어나는 URL주소를 포함하거나 최대한 자세한 설명과 함께 내가 원하는 결과가 무엇인지 설명하는 올바른 질문이 이루어 져야 올바른 답변을 받을수 있을것 입니다.

 

 

전문적인 프로그래머 하실것이 아니라면...

필요한지 필요하지 않을지 모르는 모든것을 공부하겠다는 마음으로 시작 하였다가 금새 지쳐서 포기하기 보다는

내가 필요로 하는 마음 가는것을 목표로 개발을 시작하시고, 모르는 부분을 하나하나 검색이나 질문하여 찾으며 배운다는 마인드로 공부하시는것이 더 도움이 되지 않을까 라고 저는 생각 합니다.

 

추가로 https://velog.io 같은 사이트 또한 코드를 짜는데 있어 많은 도움이 됩니다.

모쪼록... 이 미약한 팁을 통해 많은 분들께서 라이믹스를 원하는 대로 다룰 수 있게 된다면 좋겠습니다. 화이팅!!

  • profile
    자바스크립트로 동작을 만들때 주의깊게 공부해보셔야할 부분이.. 왼만한 요즘 동작들은 CSS에서도 충분히 구현가능하다는 것을 인지 하시면 더 좋을 것 같습니다.

    실제로 슬라이드로 뭔가 버튼이 눌렸을때 나오는 액션으로 튕기거나 뭔가 내려오다가 스무스하게 멈춘다던가 하던 기능들은 대부분 CSS으로 구현이 가능한 시대가 슬슬 오고 있습니다.

    실제로 비슷한 동작들을 구현하는 몇몇 웹사이트에서는 jQuery및 자바스크립트를 버리고 CSS으로만 처리 하고 잇는 곳들이 점점 생겨나고 있습니다.

    항상 최신동향이나 내용들을 좀 살펴보면서 최소 지원 버전 혹은 브라우저들을 포기한다면 폭 넓게 편하게 세팅이 가능한 시대가 점점 더 유지될거예요.

    그러니까 그거에 맞춰서 공부는 매일 매일 해야합니다...
  • profile

    추가.

    <pre>{@ print_r(변수 및 배열) }</pre>
    과 같은 방법보단 라이믹스를 사용하신다면 디버깅 기능을 이용하세요

    {@ debugPrint($logged_info)}

    이런식으로 스킨에서도 충분히 활용이 가능합니다.

    다만 디버그 설정에서 웹으로 보거나 파일로 보는 것을 선택할 수 있는데 추천하자면 파일로 선택한다음 해당 파일을

    터미널상에서 해당 파일위치찾았다면 tail -f _파일명 및 디렉토리.php 이런형태로 명령어로 실행하는 것을 추천합니다. 실시간으로 디버그 찍히는 내용들을 충분히 받아볼 수 있으며, 디버그가 쌓일때 곤란할 수 잇으니 디버그 설정에서 특정 아이피에서 채크 하는 기능을 사용하세요. 특정아이피에서 접속할때만 디버깅이 작동되어서 변수 및 내용들을 활용할 수 있고 이 경우 모듈을 만들때 POST요청시 생성되는 모든 액션들까지 전부 디버깅을 할 수 있어서 어디 특정 액션에 들어갔는지 채크 할 필요도 없이 확인이 가능할때가 많습니다.

    이 기능도 많이 활용했으면 좋겠네요.

    ETC) debugPrint 라는 것은 함수명이니 함수명을 호출하는곳은 라이믹스가 실행되는 어떤 공간에서든지 displayHandler가 작동한다면 디버깅을 확인할 수 있습니다. 언제든지 이 부분도 함께 확인하세요. 기본 POST요청시 displayHandler도 함께 작동하여 정상적으로 디버깅을 출력해줍니다.

  • profile ?
    https://rhymix.org/manual
    매뉴얼에 추가되면 좋을것같은 내용이네요