E D R , A S I H C RSS

Help On Macros



1. 매크로

매크로는 위키 페이지에 특수한 기능을 집어넣는 확장입니다. 대부분의 위키페이지는 매크로기능을 사용하지 않고 있지만 경우에 따라서 이러한 특수한 기능이 필요할 때가 있습니다. 를 들어 RecentChanges 페이지에는 RecentChanges매크로를 사용하고 있고, SystemInfo 페이지에는 SystemInfo 매크로를 사용하고 있습니다. 각 페이지를 편집하거나 I를 눌러 이전 정보로부터 페이지 소스를 보시면 매크로를 어떻게 사용하고 있는지를 보실 수 있습니다.

매크로는 [[MacroName]]과 같은 문법을 사용합니다. 매크로에 대한 인자가 필요한 경우가 있는데 각 매크로에 대한 자세한 설명은 해당 페이지에서 확인하실 수 있습니다.

위키 문법이 궁금하시면 HelpOnEditing 페이지를 참조하세요.

2. 매크로 문법

[[MacroName]] 혹은 인자가 필요한 경우에는 [[MacroName(arg1,arg2,arg3...)]]처럼 사용합니다.

매크로의 구현에 따라 인자는 다양한 방식으로 들어갈 수 있습니다.

<!> 모니위키 확장 주의사항
  • 원래 모인모인 문법에서 매크로 이름은 반드시 대문자로 시작하는 이름이어야 했습니다. 모니위키에서는 이러한 제한이 없습니다.
  • 매크로 문법은 [[페이지 이름]]문법과 충돌을 일으킬 수 있습니다. 를 들어 DateTime 페이지가 있을 때에 [[DateTime]]이라는 식으로 DateTime을 연결할 수 없습니다. 이 경우 2024-05-18 04:13:22이라고 나오게 됩니다. 이런 경우에는 [["DateTime"]]이라고 하면 DateTime이라고 링크가 걸립니다.

  • 모니위키 1.1.5 부터는 매크로에 대한 별명을 지원합니다. [[각주]]라는 식으로 써서 [[FootNote]]의 별명으로 사용하실 수 있습니다.
    이렇게 사용하려면 다음과 같은 설정을 config.php에 넣어주셔야 합니다.

$myplugins=array("각주"=>"FootNote",...); # ...는 생략을 뜻합니다. 다른 내용이 없으면 쓰지 않으셔야 합니다.
  • 이경우 대소문자 구분이 중요한데, 반드시 plugin/파일이름.php에 대응하는 파일이름을 "각주"=>"매크로파일이름"식으로 지정해야 합니다.

2.1. 검색 매크로

매크로설명사용례
[[TitleSearch]] 페이지 제목/별명 찾기 [1] FindPage
[[FullSearch]] 페이지 내용 찾기 FindPage
[[GoTo]] 페이지 바로가기 FindPage
[[PageList(regex)]] 정규식에 해당하는 페이지이름 찾기 HelpIndex

2.2. 네비게이션

매크로설명사용례
[[RecentChanges]] 최근에 변경된 페이지 목록 RecentChanges
[[TitleIndex]] 모든 페이지에 대한 제목 목차 TitleIndex
[[WordIndex]] 페이지 이름으로 구성된 단어 목차 WordIndex
[[RandomPage]] 랜덤페이지 2002년도ACM문제샘플풀이/문제D
[[RandomPage(#)]] 여러개의 랜덤 페이지. 인자는 숫자
[[TableOfContents]] 목차 매크로 현재 보고계신 페이지에서 사용중입니다.

2.3. 시스템 정보

매크로설명사용례
[[InterWiki]] 등록된 터위키 이름 InterWiki
[[SystemInfo]] 현재 위키의 사양 SystemInfo
[[PageCount]] 전체 페이지 개수 7540 페이지
[[PageHits]] 페이지를 본 회수 PageHits

2.4. 기타

매크로설명사용례
[[Icon(image)]] 시스템 아이콘 보여주기 HelpOnNavigation
[[UserPreferences]] 사용자 환경설정 UserPreferences
[[BR]] 강제 줄바꿈 첫번째 줄
다음 줄
[[Include(HelloWorld[,heading[,level]])]] 다른 페이지를 읽어옴
Hello, World! 라는 문자열을 출력하는 프로그램은 대부분의 언어를 배우는 첫걸음이 되어준다.

누가 제일 처음 HelloWorld 를 만들었을까. 어떻게 모든 언어의 입문서에 빠지지 않는 제가 된것일까.
프로그래밍의 첫걸음으로 HelloWorld를 출력하는 관습은 1978년에 출판된, 브라이언 커니핸과 데니스 리치가 쓴 "The C Programming Language"라는 책에서 비롯되었다.

이미 이 제가 나올때부터 '프로그래밍이란 현실세계에 대한 가상세계로의 모델링' 이라는 개념을 들고 온 것이 아닐까. 새로운 세상에 대한 노크. 아. 멋지도다;

전에 CACM 에서는 OO Language (Java 등)에서 C 스타일의 HelloWorld 소스를 로 드는 점에 관련하여 OO 적이지 못한 라는 논쟁이 있기도 했다는. ^^

관련 링크

언어별 Hello World

C version

~cpp 
#include <stdio.h>

int main(void)
{
    printf("Hello, World!n");
    return 0;
}

C++ version

~cpp 
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World" << endl;
    return 0;
}

Python version

~cpp 
print "Hello, World!"

Perl version

~cpp 
#/usr/bin/perl

print "Hello World!n";

Ruby version

puts "Hello World!"

Ruby version (OOP)

class String
    def say
        puts self
    end
end
"Hello, world!".say

Java version

책에 처음 나오는
~cpp 
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
권장
~cpp 
public class HelloWorld{
    public static void main(String[] args){
        Mouth mouth = new Mouth();
        mouth.say("Hello World!");
    }
}
class Mouth{
    public void say(String what){
        System.out.println(what);
    }
}

PHP Web version

~cpp 
<?php 
    echo "<H1>Hello, World!</H1><BR>n"
?>

PHP Web - Template version

~cpp 
<?php
    include_once "class.CHTemplate.inc";
    $tpl = CHTemplate();
    $tpl->load_file("template_hello.tpl");
    $tpl->register("MessageString", "Hello, World!");
    $tpl->pprint();
?>

----
template_hello.tpl

<HTML>
<BODY><TABLE BORDER=1><TR><TD>
<H1> {MessageString} </H1>
</TD></TR></TABLE></BODY>
</HTML>

Windows API version

~cpp 
#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow)
{
    MessageBox (NULL, "Hello, World!", "Message", MB_OK);
    return 0;
}


Scheme version

~cpp 
(write "Hello World")

C# version

~cpp 
using System;

namespace HelloWorld
{
	class HelloWorld
	{
		static void Main()
		{
			Console.WriteLine("Hello World!");
		}
	}
}

VB.NET version

~cpp 
Module HelloWorld

    Sub Main()
        Console.WriteLine("Hello World!")
    End Sub

End Module

J# version

~cpp 
package HelloWorld;

public class HelloWorld
{
	public static void main()
	{
		System.Console.WriteLine("Hello World!");
	}
}

Managed Extension C++ version

~cpp 
#using <mscorlib.dll>

using namespace System;

int main(void)
{
    Console::WriteLine("Hello World");
    return 0;
}

Ada version

~cpp
with Ada.Text_IO;
Procedure main is
begin
   Ada.Text_IO.Put_Line("Hello World!");
end main;
[[Comment]] 댓글창 [[Comment]]

3. 사용례

각각의 매크로에 대한 제는 각 매크로 해당 페이지에서 보실 수 있습니다. 간단한 SystemInfo페이지에서 사용하는 [[SystemInfo]]매크로입니다. [[SystemInfo]]를 임의의 페이지에 집어넣으면 다음과 같이 보여집니다:
PHP Version 5.5.x (Linux 6.5.0-1014-aws SMP)
MoniWiki Version Release 1.2.5p2 [Revision: 1.2000 ]
HTTP Server Version Apache/2.4.10
Number of Pages 7540


----
  • [1] 모니위키 1.1.5부터 페이지 별명도 찾아줍니다
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:23
Processing time 0.0491 sec