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-09-20 23:57:24라고 나오게 됩니다. 런 경우에는 [["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]] 랜덤페 벡터/박능규
[[RandomPage(#)]] 여러개의 랜덤 페지. 인자는 숫자
[[TableOfContents]] 목차 매크로 현재 보고계신 페지에서 사용중입니다.

2.3. 시스템 정보

매크로설명사용례
[[InterWiki]] 등록된 터위키 InterWiki
[[SystemInfo]] 현재 위키의 사양 SystemInfo
[[PageCount]] 전체 페지 개수 7552
[[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-1023-aws SMP)
MoniWiki Version Release 1.2.5p2 [Revision: 1.2000 ]
HTTP Server Version Apache/2.4.10
Number of Pages 7552


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