아.. 눈물이 난다.
[카테고리:] 이전 블로그
태터툴즈, 블로거닷컴, VCL WordPress 등지에서 내보낸 블로그 글들.
-
Mediawiki 다시 살려내기
미디어 위키는 자료를 체계적으로 보관하기 좋고,
블로그는 자료를 안정적으로 보관할 수 있어서 좋다.이번에 너무 성급히 젠투 서버를 밀어버리는 바람에 위키를 다시 살리느라 고생을 좀 했는데
실제로 해본 경험을 적어두도록 한다. 위키를 살려내는 과정을 위키에 적을 수는 없지 않나…연구실 NAS에 2010년 12월 25일까지 백업을 시켜 두었다.
- 백업 문제점
- 여기는 환경설정 및 이미지만 백업이 되어 있었고 extension data는 없었다. extension도 간간히 백업하도록 (1달에 1번?) 고쳐야할 것이다.
이것을 받아 미디어위키에서 위키를 받는다.
그리고 데이터베이스를 복구한다.
위키로 가면 위키를 설치하라는 말이 나오는데, 일단 위키는 설치 메뉴를 이용해 설치하도록 한다. 기존의 위키 옵션과 동일하게 하자. 위키 이름은 Nambaxawiki이다.위키를 복구하면 데이터베이스가 있기 때문에 어떻게든 화면이 나온다. 기존의 LocalSettings.php 파일을 교체한 후 위키가 생성한 LocalSettings.php 파일을 참고하면서 일단 돌아가도록 세팅을 변경하자.
그리고 처음에는 apache의 rewrite 가 되지 않기 때문에 항상 index.php를 붙여 주어야 한다.
이것을 고치려면$wgArticlePath = “$wgScriptPath/$1”;
$wgUsePathInfo = true;위키 디렉토리에 .htaccess를 생성한다.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [PT,L,QSA]
문제가되는 extension은 주석 처리하면 이렇게 하면 어떻게든 위키가 살아난다.GeSHi가 Waning을 뱉어내는데, 이것은 php.ini의 display_errors = Off 로 하자.
나는 PHP로 개발할 거 아니니까.. -
현재 블로그는
현재 블로그는 설치형 블로그에 의존하고 있습니다.
http://nambaxa.wo.tc/tc/ 로 오면 똑같은 블로그가 있습니다.요즘은 위키를 더 선호합니다.
http://wiki.nambaxa.wo.tc 입니다. -
클래스 크기에 멤버 함수가 영항을 줄까?
일단 VS2008에서의 답은 NO 입니다.
좀 생각해 보면 그럴 만도 하지..
컴파일 된 이후 오브젝트 코드에서 무슨 클래스와 멤버 변수, 함수 개념이 있나..
그냥 언어 단계에서 사람들이 작성할 때 필요한 규칙일 뿐인 것을. -
getPath
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
std::string getPath(std::string & fullpath);
int main(int argc, char **argv)
{
std::vector<std::string> arglist;
for(char ** v = argv+1; *v != NULL; ++v) {
std::cout << *v << std::endl;
arglist.push_back( getPath(std::string(*v)) );
}
std::copy(arglist.begin(), arglist.end(), std::ostream_iterator<std::string>(std::cout, “n”));
return EXIT_SUCCESS;
}
std::string getPath(std::string & fullpath)
{
for(std::string::iterator it = fullpath.begin();
it != fullpath.end();
++it)
{
if( *it == ‘\’ )
*it = ‘/’;
}
std::string::size_type pos_beg = fullpath.at(0) == ‘”‘ ? 1 : 0;
std::string::size_type pos_end = *fullpath.rbegin() == ‘/’ ? std::string::npos : fullpath.rfind(‘/’)+1;
return fullpath.substr(pos_beg, pos_end);
}