가온 위키:기능 구현 불가-누가 해결책을 알려주세요!

이 문서는...[원본 편집]

답답한 우리의 가온 위키 관리자가 구현하지 못해, 착한 유저가 해결책을 제시한 경우, 감사의 표시로 이곳과 가온 위키 커뮤니티에 표시하는 곳입니다.

구현 못한 부분[원본 편집]

  • 아직까지 없습니다.

해결됨[원본 편집]

리버티 스킨 관련 문제[원본 편집]

리버티 스킨과 관련된 문제는 가온 위키:기능 구현 불가-누가 해결책을 알려주세요!/리버티 스킨 문서를 참고하자.

영상 가져오기(Embed) 관련 문제[원본 편집]

외부 서비스들 중에서 가져오지 못하는 것들은 가온 위키:기능 구현 불가-누가 해결책을 알려주세요!/영상 가져오기 문서를 참고하자!

이미지 관련 문제[원본 편집]

이미지 크기 설정시 파일 링크만 뜨는 현상[원본 편집]

[[파일:updates.png|100px]] 이렇게 하면 일반 문서처럼 링크로 뜬다. 서버 이전 전에는 이러지 않았는데...

미디어위키 헬프 데스크에서 찾았다.

수정 전[원본 편집]

미디어위키의 루트 폴더에 있는 LocalSettings.php를 수정한다.

수정 후[원본 편집]

LocalSettings.php의 하단 부분에 추가하자.

$wgGenerateThumbnailOnParse = true;

그리고 미디어위키 버전이 1.30 이상인 경우, 썸네일을 재생성하자. 미디어위키의 루트 폴더에서 maintenance 폴더로 이동한 뒤, 아래의 명령어를 입력하자.

root@gaon:/var/www/html/w/maintenance# php rebuildImages.php
하고 싶은말[원본 편집]

이 오류는 미디어위키 1.27 버전에서는 없던 오류이므로 1.30 이상 버전의 오류같다. 물론 썸네일은 Imagemagick가 미리 설치 및 미디어위키에서 미리 설정 되어 있어야 한다.

SVG 파일 업로드시 썸네일의 흑백화[원본 편집]

SVG 파일을 업로드하면 원래 가지고 있던 색상값은 표시되지 않고 흑백으로만 표시가 된다. 이는 SVG를 png로 변환하는 프로그램인 ImageMagick의 특정 버전에서 나타난 오류이다. zlzleking님이 보고해 주셨다.

수정 전[원본 편집]

먼저 Inkscape를 설치한다. 우분투 기준으로 아래의 명령어를 입력하면 된다.

root@gaon:/# apt update
root@gaon:/# apt install inkscape

이후 미디어위키의 루트 폴더에 있는 LocalSettings.php를 수정한다.

$wgSVGConverter = 'ImageMagick';
수정 후[원본 편집]

LocalSettings.php의 하단 부분에 추가하자. Inkscape의 경로는 자신의 환경에 맞춰 수정하자.

$wgSVGConverterPath = '/usr/bin/inkscape';
$wgSVGConverters = [
        'Inkscape' => '/usr/bin/inkscape -w $width -z -w $width -f $input -e $output',
];
$wgSVGConverter = 'Inkscape';

#$wgSVGConverter = 'ImageMagick';

여기서

$wgSVGConverter = 'ImageMagick';

부분은 반드시 주석처리 한다.

그리고 미디어위키 버전이 1.30 이상인 경우, 썸네일을 재생성하자. 미디어위키의 루트 폴더에서 maintenance 폴더로 이동한 뒤, 아래의 명령어를 입력하자.

root@gaon:/var/www/html/w/maintenance# php rebuildImages.php

신택스 강조(Syntax Highlight) 사용시 사용된 문서가 구문 강조에 오류가 있는 문서로 분류되는 현상[원본 편집]

미디어위키 1.33.1 버전에 있는 SyntaxHighlight 확장기능을 사용하는 경우, "구문 강조에 오류가 있는 문서"로 자동 분류된다.

미디어위키 코어에 포함되어 있는 버전만 파이썬 전역 환경변수 처리를 요구한다.

구버전 사용[원본 편집]

1.32.x 버전의 구버전을 사용하는 방법이다. 웹호스팅과 같이 서버를 직접 조작하지 못하는 경우에 사용하면 된다.

SyntaxHighlight 다운로드 페이지로 이동 후, 미디어위키 버전을 1.32 버전으로 설정 후, 기존에 있던 확장기능 삭제 후 새로 받은 버전으로 업로드 한다.

확장기능 페이지서 1.33버전으로 다운로드[원본 편집]

이상하게 1.33 버전으로 다운로드 받아도 작동한다. 아마도 코어 파일에 포함되어 있는 버전만 파이썬 전역 환경변수 처리해야 하는 것 같다.

이후 미디어위키 1.34 코어에 포함된 버전은 해당 문제가 발생하지 않는다. 1.33.1에 포함된 버전만 문제인 것 같다.

파이썬3 설치[원본 편집]

1.35.1 기준, 서버에 파이썬3를 설치하면 해당 문제는 발생하지 않는다.

설치방법은 쉘에

root@gaon:/# apt update && apt -y install python3

이라고 입력한다. 설치가 되었는지 확인하려면,

root@gaon:/# python3 --version
Python 3.8.5

이라고 입력한다. 이때 버전은 위의 버전과 다를 수 있다.

TitleKey 확장기능 설치[원본 편집]

대소문자 구분 없이 문서를 검색 할 수 있는 TitleKey 설정 중, php extensions/TitleKey/maintenance/rebuildTitleKeys.php 명령어를 입력할 때, 경로를 찾지 못하는 문제가 있다.

이 문제는 환경변수 $IP가 경로를 제대로 반환하지 않아 생기는 문제이다.

여기서는 환경변수 $IP를 수정하지 않고, 9번째 줄을 절대경로로 바꾸어 사용했다. 사용 환경에 맞추어 수정하길 바란다.

수정 전[원본 편집]

$IP = getenv( 'MW_INSTALL_PATH' );
if ( $IP === false ) {
	$IP = __DIR__ . '/../..';
}
require_once "$IP/maintenance/Maintenance.php";

// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
	require __DIR__ . '/../includes/TitleKey.php';
}

수정 후[원본 편집]

$IP = getenv( 'MW_INSTALL_PATH' );
if ( $IP === false ) {
	$IP = __DIR__ . '/../..';
}
require_once "/var/www/html/w/maintenance/Maintenance.php";

// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
	require __DIR__ . '/../includes/TitleKey.php';
}

또는 상대경로로 지정해도 된다. 이 경우에는 미디어위키 설치 경로에 구애받지 않는다는 장점이 있다.

$IP = getenv( 'MW_INSTALL_PATH' );
if ( $IP === false ) {
	$IP = __DIR__ . '/../..';
}
require_once "../../../maintenance/Maintenance.php";

// In case we want to do offline initialization...
if ( !class_exists( 'TitleKey' ) ) {
	require __DIR__ . '/../includes/TitleKey.php';
}

비주얼 에디터 설치[원본 편집]

비주얼 에디터를 설치하고, 사용할 수 있다. 다만 짧은 주소 설정시 오류가 발생할 수 있으므로 본 코드를 사용하자.

짧은 주소 설정(선택, 권장)[원본 편집]

짧은 주소를 설정하자. .htaccess를 사용하므로 아파치 이용자만 할 수 있다.(짧은 주소 자체는 nginx도 할 수 있지만, 서술하지 않음).

먼저 LocalSettings.php가 있는 루트 폴더로 이동하여 .htaccess를 열자. 없으면 생성하자.

이후 아래와 같이 입력한다.

RewriteEngine On
RewriteBase /w/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /w/index.php [L]

RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]

RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2 [L,QSA,B]

RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/?images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ %{DOCUMENT_ROOT}/thumb.php?f=$1&width=$2&archived=1 [L,QSA,B]

여기서 2번째 줄과 6번째 줄에 있는 /w/ 부분에 원하는 줄임(https://example.com/w/문서명) 단어를 입력한다.

출처 : 씨실과 날실님 티스토리 블로그, 미디어위키 토론 중 Rogerhc님의 답변

이후 LocalSettings.php 하단에 다음과 같이 입력한다.

$wgScriptExtension = ".php";
$wgArticlePath = "{$wgScriptPath}/$1";
$wgUsePathInfo = true;

비주얼 에디터 설치[원본 편집]

1.37버전은 이미 extensions 폴더에 있다. 코어에 포함되어 있으나, 삭제한 사람은 미디어위키 비주얼 에디터 페이지에서 자신의 버전에 맞게 다운로드 받은 뒤 extensions 폴더 안에 넣는다.

이후 LocalSettings.php 하단에 다음과 같이 입력한다.

wfLoadExtension( 'VisualEditor' );

이러면 끝이다.

미디어위키 1.39 버전 업그레이드 이후 분류값 앞에 점이 표시되고 세로로 정렬되는 문제[원본 편집]

미디어위키 1.39 rc버전에서는 이런 문제가 없었지만, 1.39 정식버전에서는 분류값 앞에 점이 표시되고, 세로로 정렬되는 문제가 있다. 또한 분류값이 분류:밑에 줄에 표시되는 문제가 있다. 미디어위키1 39 분류 문제.png

이는 미디어위키:Common.css 문서를 수정하면 된다.

수정 전[원본 편집]

/* 이 CSS 설정은 모든 스킨에 적용됩니다 */
.mw-highlight pre {
	font-size: 90%;
}

수정 후[원본 편집]

/* 이 CSS 설정은 모든 스킨에 적용됩니다 */
.mw-highlight pre {
	font-size: 90%;
}

/* 1.39 버전에서 분류 표시가 li로 표시돠는 문제 해결 */
#mw-normal-catlinks > ul {
	list-style: none;
}

#mw-normal-catlinks > ul > li {
	float: left;
	margin-right: 15px;
}

/* 분류: 밑부분에 분류값이 표시되는 문제 해결 */
#mw-normal-catlinks {
	display: flex;
	align-items: center;
}

구현한 기능[원본 편집]

인디케이터 표시[원본 편집]

simple-scroll-progress를 이용하여 스크롤한 범위를 표시하는 기능입니다.

리버티 스킨-스크롤 범위.gif[1]

혹시 사용하고 싶다면, Liberty 깃허브 저장소를 다운로드 받아 사용하면 된다. 라이브러리는 외부에서 불러오니 참고하자.

클라우드플레어 원본 IP 주소 표시[원본 편집]

클라우드플레어 사용 시, 비로그인 유저가 문서를 편집하는 경우, ip주소가 클라우드플레어의 ip로 기록됩니다. 이를 수정해주는 확장기능을 개발하여 배포합니다.

Green tickmw_CloudflareRealIP 확장기능을 설치하면, 원본 IP 주소가 표시됩니다.

설치[원본 편집]

  1. 먼저 GitHub 저장소에서 확장기능을 다운로드하세요.
  2. 다운로드 받은 확장기능을 미디어위키의 "extensions" 폴더에 업로드합니다.
  3. 미디어위키의 "LocalSettings.php" 파일을 찾아 아래 코드를 추가하세요


wfLoadExtension( 'CloudflareRealIP' );

사용법[원본 편집]

이 확장기능을 설치하고 나면 아무런 추가 설정 없이 자동으로 작동합니다. CloudflareRealIP 확장기능은 미디어위키에서 로그인하지 않고 편집할 때 Cloudflare의 IP 주소 대신 원래 사용자의 IP 주소를 저장합니다.

참고 사항[원본 편집]

이 확장기능은 미디어위키 1.25 이상과 호환됩니다. 또한 Cloudflare 서비스를 사용하는 경우에만 필요하며, Cloudflare를 사용하지 않거나 단순히 DNS만 사용하는 경우 설치할 필요가 없습니다.

원리[원본 편집]

Cloudflare Real IP 확장 기능의 작동 원리는 다음과 같습니다:

  1. 사용자가 미디어위키에서 로그인하지 않고 편집을 진행합니다.
  2. Cloudflare는 사용자의 원래 IP 주소를 "CF-Connecting-IP"라는 HTTP 헤더를 통해 전달합니다.
  3. 미디어위키에서는 로그인하지 않은 사용자의 IP 주소를 기록하려 할 때 UserGetIP 이벤트가 발생합니다.
  4. Cloudflare Real IP 확장 기능은 이 이벤트를 통해 사용자의 IP 주소를 가져옵니다.
  5. 확장 기능은 $_SERVER['HTTP_CF_CONNECTING_IP'] 변수를 확인하여 Cloudflare가 전달한 원래 사용자의 IP 주소가 있는지 확인합니다.
  6. 원래 사용자의 IP 주소가 있다면, 확장 기능은 이 IP 주소로 미디어위키에 저장되는 IP 주소를 변경합니다.
  7. 결과적으로, 미디어위키에서 로그인하지 않은 사용자의 편집 기록에 원래 사용자의 IP 주소가 저장됩니다.

이 확장 기능을 사용하면 Cloudflare를 사용하는 경우에도 미디어위키에서 로그인하지 않은 사용자의 원래 IP 주소를 정확하게 기록할 수 있습니다. 이로 인해 IP 주소를 기반으로 한 사용자 관리 및 안전 조치가 훨씬 간편해집니다.

라이선스[원본 편집]

MIT 라이선스로 배포됩니다.

단축 URL 생성[원본 편집]

긴 문서의 URL, 특히 문서명이 한글로 이루어져 있는 경우, URL이 길어져 공유할 때 불편합니다. 그래서 단축 URL을 생성하고, 복사할 수 있는 기능을 추가했습니다.

사용 방법[원본 편집]

문서 최하단에 CCL 표기 부분과 개인정보처리방침 가온 위키 소개 면책 조항 링크 부분 사이에 • 현재 페이지 URL 줄이기 메뉴를 누르면, 팝업창이 뜨면서 현재 문서의 단축된 URL이 생성이 됩니다.

원리[원본 편집]

미디어위키에는 문서를 편집할 때마다, 문서의 역사에 고유한 번호를 부여합니다. 이 번호는 oldid로, 1부터 편집할 때마다 1씩 증가합니다. 자세한 내용은 미디어위키/oldid 문서를 참고하세요!

oldid 값을 62진법[2]으로 변환하여 단축된 URL을 제공합니다. 일반 문서와 혼동이 생기지 않도록, /a/ 경로로 제공됩니다.

주의사항[원본 편집]

  • oldid 값은 문서가 편집되면 새롭게 바뀌므로, 예전에 생성된 URL 값과 현재의 URL 값에는 차이가 있을 수 있습니다. 하지만 둘 다 원래의 문서로 자동으로 이동하므로 걱정하지 않아도 됩니다.
  • 특수 문서, 편집 페이지 등 oldid 값이 존재하지 않는 페이지에는 본 메뉴가 생성되지 않습니다.

각주[원본 편집]

  1. 초기의 타 라이브러리를 사용한 모습. 현재 버전은 본 위키에 적용되어 있다.
  2. 숫자(0-9) + 알파벳 대문자(A-Z) + 알파벳 소문자(a-z)
• 현재 페이지 URL 줄이기