작업실

그누보드 및 아미나테마 업그레이드 및 에러 해결완료!

우성군 9 8074 0

1. 업그레이드 완료!

 
이번에 그누보드5 정식버전 및 아미나테마 최신버전으로 업그레이드했습니다!
 
다른건 별 문제 없었는데 두개가 문제더군요 ㅎ
 
하나는 아미나 캐시가 깨지는 문제.
 
그리고 메인의 최신글이 진짜 최신글(30일 이내)만 나오는 문제였습니다.

아미나 캐시 부분 복원 방법은 아미나 사이트에도 올렸지만 백업을 위해서 제 홈페이지에도 올립니다.
 
 

2. 아미나 캐시 문제 해결 방법

 
한별아빠님의 팁으로 글을 작성해봅니다.
 
기존 방법대로 설정하면 CSS가 다 깨져버립니다.
 
그 이유는 그누5에서 CSS를 헤드로 모아주는 기능이 있는데 아미나의 기능과 출동(?)하기 때문이라고 합니다.
 
그래서 아미나의 기능을 해제해주면 해결이 됩니다.
 
 
전 /amina/misc/latest/list에 있는 총 3개의 최신글 리스트를 수정해줬습니다.
 
basic, basic-ticker, basic-title
 
위 폴더를 복제해줍니다.
 
전 basic-c, basic-ticker-c, basic-title-c
 
이렇게 복제하였습니다.
 
각각 복제한 폴더에 있는
 
latest.list.php
 
파일에서
 
add_stylesheet('<link rel="stylesheet" href="'.$latest_list_url.'/latest.list.css">',0);
 

 
echo '<link rel="stylesheet" href="'.$latest_list_url.'/latest.list.css">';
 
위와 같이 바꿔줍니다.
 
 
참고로 
 
basic-title에서는
 
echo '<link rel="stylesheet" href="'.$latest_list_url.'/latest.list.css" media="screen">';
 
위와 같이 media 부분을 추가해주면 더 좋겠죠?
 
안해도 별 차이는 없더군요.
 
 
그리고 basic-title 전용으로
 
nivoslider3.php도 수정해야 합니다.
 
/amina/app 에 있습니다.
 
add_stylesheet('<link rel="stylesheet" href="'.AMINA_URL.'/app/nivoSlider/nivo.slider.css" type="text/css">',0);
 

 
echo '<link rel="stylesheet" href="'.AMINA_URL.'/app/nivoSlider/nivo.slider.css" type="text/css">';
 
위와 같이 바꾸면 됩니다.
 
 
이제 아미나 캐시가 잘 적용될 것입니다.
 
 

3. 한별아빠님의 부연설명

 
1. 부연설명하면 충돌도 아니고, 둘다 정상이고, 이상은 없습니다. 단지, 처리과정에 따른 이해가 조금 필요해요. 
2. G5가 CSS 헤더에 모아주는 기능이 바뀌기 전에는 먼저 페이지에 찍고, 찍은 내용을 파싱해서 css 파일을 찾아 이걸 중복검사한 후 헤드로 넣어 주었습니다. 최근글의 경우 보통 출력된 결과물을 그대로 캐시에 넣기 때문에 이 결과물 안에 CSS가 포함되어 있습니다. 즉, 캐싱된 최근글을 출력하면 화면에 CSS를 찍고, G5가 이 결과물을 파싱해서 CSS를 찾아 헤더로 보내 준 것이죠. 
3. 그런데 이럴 경우 모든 CSS가 다 헤더로 가버립니다. 문제는 특정 CSS의 경우 헤더로 보내지 않아야 될 것들이 있다는 것이죠. 예를들어 웹폰트의 경우 무겁기 때문에 이게 다 로딩될 때까지 기다리면 화면이 늦게 뜹니다. 그래서 웹폰트의 경우 페이지 제일 하단에 넣어 마지막에 처리하도록 하죠. 즉, 웹폰트가 뜨기 전에 대체폰트로 화면이 빨리보이고, 로딩이 끝나는 시점에 화면 폰트가 변경되는 것입니다. 아마 제법 보셨을꺼예요. 
4. 그래서 개선요구사항 중 하나가 헤드에 보낼 CSS를 선택적으로 해 달라는 것이고, add_stylesheet 함수로 처리하는 것은 헤더로, 그냥 echo 나 본문에 css 를 그대로 넣는 것은 그 자리에 출력하는 형태로 변경된 것입니다. 그러면서 헤더로 보낼 것은 출력 전에 함수(메모리)에서 미리 소거를 하는 것이고요. 
5. 그래서 현재 최근글을 출력하면 최근글 자체에는 CSS가 없는 것이고, 이 CSS 없는 것을 그대로 캐싱하니 CSS가 다 깨어져 나오는 것입니다. 그리고 캐싱된 것을 가져오니 최근글 추출처리 자체를 하지 않아, 헤더(메모리)로 보낼 CSS 자체도 없는 것이고요. 
6. 그렇기 때문에 최근글 출력결과 자체를 캐싱할 실 분은 출력결과물에 CSS에 포함되어야 하니, echo 로 바로 화면에 찍어 주어야 하는 것입니다. 
7. 반대로 자동메뉴처럼 캐시에 추출된 결과가 아니라 배열변수($list)를 넣으면, add_stylesheet 를 그대로 사용하셔도 무방하고요. 최근글 로직은 그대로 돌아가는데, 글을 뽑아오는 결과값($list)만 캐싱에서 가져올 것이냐 아니면 다시 계산해서 뽑아올 것이냐의 차이라서요.(수정은 이게 더 복잡해요.ㅠㅠ) 
8. 참고로 G4의 경우에는 add_stylesheet 함수 자체가 없기 때문에 제가 추가해 넣고, 그냥 echo 로 찍도록 해 놓아서 굳이 수정 안하셔도 사용가능합니다. 
9. 결론은 캐싱을 어떻게 적용할 것인지에 대한 문제이고, 만약 index.php 파일 자체를 다 캐싱한다면 굳이 수정할 필요는 전혀 없습니다. 이건 아주 아주 예전에 설명드렸음. 그냥 한방에 메인에 있는 것 전부다 캐싱할 수 있어요. 단, 주의사항은 로그인에 대한 부분입니다.ㅠㅠ
 
 

4. 최신글DB 복원 방법

 
아미나 캐시는 해결했고, 최신글 중에 30일이 지난 글이 삭제된 경우 해결 방법입니다.

일단 삭제되기 전 DB를 가지고 있어야만 복원이 가능합니다. (DB가 없다면.. 복원은 불가능합니다.)
 
저는 우분투 서버로 직접 운영하고 있기 때문에 DB를 새로 생성하여 기존 DB를 복원하였습니다.
 
1. 그누보드5 관리자 기본환경설정에서 최근게시물 삭제를 730일로 정했습니다. 2년이죠 ㅎㅎ
 
 
 
2. 복원을 위한 DB 생성
 
mysql에 들어가서
 
CREATE DATABASE g5_new DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 
g5_new라는 DB를 생성했습니다.
 
 
3. 백업한 DB(미리 준비해둔 1.sql)를 g5_new에 넣기
 
mysql -u아이디 -p비번 g5_new < 1.sql
 
위와 같이 g5_new에 백업한 DB를 넣었습니다.
 
 
3. phpMyAdmin에서 g5_new DB에 들어가서 g5_board_new 테이블에 들어가서 내보내기를 실행합니다.
 
 
sql 파일로 나올 것입니다.
 
 
4. 그리고 기존 g5 DB에 g5_board_new 테이블에 들어가서 가져오기를 실행합니다.
 

몇가지 에러가 있을 수 있습니다. 중복된 데이터 때문인데요.
 
기존 중복된 데이터는 빼고 다 가져오게 됩니다.
 
이제 최신글에 가보면 기존에 있던 최신글이 다 나옵니다 ^^

, , , , , ,

9 Comments
희망규짱 2014.12.28 14:28  
지금도 설정해야하는건가요?
우성군 2014.12.28 15:49  
최신글은 기간만 늘리면 상관없어요.

대신 기간 지나서 지워진 것을 살리는 방법이구요.

나머진 캐시 부분이라 에러가 나온다면 적용하면 되구요.
희망규짱 2015.01.07 20:08  
댓글내용 확인
우성군 2015.01.08 00:33  
복제한건 최신글에서 해당 최신글 리스트 이름을 수정해줘야 합니다. index에 최신글 불러올 때 거기요.

이윰님께 문의드려보세요.

이윰님 테마는 이쁜데 무거워보여서...
희망규짱 2015.02.26 21:55  
댓글내용 확인
우성군 2015.02.27 00:01  
넵!
희망규짱 2015.02.28 11:05  
가만 생각하니 0으로 값을 줘버리면 어떻게 되나요? 0이면 무제한이죠?;
우성군 2015.02.28 16:36  
음... 그건 안해봤네요 ㄷ ㄷ ㄷ
우성군 2015.03.01 03:11  
SIR에 한번 문의해보세요.