๋ถ๋ฅ:์คํฌ๋ฆฝํธ ์ธ์ด
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
๋ฌด๋ฃ ์คํ์์ค ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ค. ๊ธฐ๋ณธ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค.[1]
์ด ํ๋ก๊ทธ๋จ์ 2003๋ ๊ฒฝ์ ์ฒ์ ๊ณต๊ฐ๋์๋๋ฐ, ์ฌ์ค ์ด๋ณด๋ค ์ด์ ์ธ 1999๋ ๊ฒฝ์ ๋์จ AutoIt์ ๋ง๋ค๋ ์ ์์ ๊ทธ๋ฃน ์ค ํ ๋ช ์ด AutoIt V2์์ V3๋ก ๋์ด๊ฐ๋ ์์ ์์ ์ปจ์ ์ ๋ํ ๊ฒฌํด์ฐจ์ด๋ก ๋ฐ๋ก ๋ ์์ ์ผ๋ก ๋ง๋ค์ด AutoIt ์ปค๋ฎค๋ํฐ์ ๊ณต๊ฐํ๋ฉด์ ๋์จ ๋ฌผ๊ฑด์ด๋ค. AutoIt V2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฐจ์ฉํ๊ณ ์์ผ๋ฉฐ, ํ์ฌ์ AutoIt V3๋ ์์ ๋ค๋ฅธ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์๋ค.
์ฒ์์๋ AutoIt, AHK ๋ชจ๋ GPL ๋ผ์ด์ผ์คํ์ ์์ค๋ฅผ ๊ณต๊ฐํ์ผ๋, AutoIt ์ธก์ "๊ฒฝ์์๊ฐ ์ง์์ ์ผ๋ก ์ฐ๋ฆฌ์ ์์ค๋ฅผ ๋ฒ ๋ผ๊ณ ์๋ค" ๋ฉด์ ์์ค ๋น๊ณต๊ฐ๋ก ๋ฐ๋์๋ค.
์ด ํ๋ก๊ทธ๋จ์ 2003๋ ๊ฒฝ์ ์ฒ์ ๊ณต๊ฐ๋์๋๋ฐ, ์ฌ์ค ์ด๋ณด๋ค ์ด์ ์ธ 1999๋ ๊ฒฝ์ ๋์จ AutoIt์ ๋ง๋ค๋ ์ ์์ ๊ทธ๋ฃน ์ค ํ ๋ช ์ด AutoIt V2์์ V3๋ก ๋์ด๊ฐ๋ ์์ ์์ ์ปจ์ ์ ๋ํ ๊ฒฌํด์ฐจ์ด๋ก ๋ฐ๋ก ๋ ์์ ์ผ๋ก ๋ง๋ค์ด AutoIt ์ปค๋ฎค๋ํฐ์ ๊ณต๊ฐํ๋ฉด์ ๋์จ ๋ฌผ๊ฑด์ด๋ค. AutoIt V2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฐจ์ฉํ๊ณ ์์ผ๋ฉฐ, ํ์ฌ์ AutoIt V3๋ ์์ ๋ค๋ฅธ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์๋ค.
์ฒ์์๋ AutoIt, AHK ๋ชจ๋ GPL ๋ผ์ด์ผ์คํ์ ์์ค๋ฅผ ๊ณต๊ฐํ์ผ๋, AutoIt ์ธก์ "๊ฒฝ์์๊ฐ ์ง์์ ์ผ๋ก ์ฐ๋ฆฌ์ ์์ค๋ฅผ ๋ฒ ๋ผ๊ณ ์๋ค" ๋ฉด์ ์์ค ๋น๊ณต๊ฐ๋ก ๋ฐ๋์๋ค.
2. ํน์ง[ํธ์ง]
๋ชจ๋ ๋งค๊ฐ๋ณ์ ์ฌ์ด์ ์ผํ๊ฐ ๋ค์ด๊ฐ๋ค. [์์1]
์คํ ํซํค๋ผ๋ ์ด๋ฆ์ ๊ฑธ๋ง๊ฒ ์ด์์ฒด์ ๋จ์ถํค ์ง์ ์ ํนํ๋์ด ์๋ค. ์ํ๋ ๋๋ก ํค๋ฅผ ๋ณ๊ฒฝํ๊ณ .exe ํ์ผ๋ก ๋ง๋ค๋ฉด, ํด๋น ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์ฌ๋ผ๊ฐ ํ ์คํ์ด ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ๋ชฉ์ ์ค ํ๋๋ ๋งคํฌ๋ก์ด๋ค. [์ถ์ฒ]
์ฝ๊ฒ ๋ง๋ ๋ค๊ณ ๋ง๋ AutoIt ๋ง ํด๋ BASIC ์ธ์ด์ ํํ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋นํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ๋ ๋ฐฐ์ฐ๊ธฐ ๋งค์ฐ ์ด๋ ค์ ๋ ๋ฐ๋ฉด, AHK ๋ ์ง๊ด์ ์ด๊ณ ๊ผญ ํ์ํ ๊ธฐ๋ฅ๋ง ๋ด์ ๋ ผ๋ฆฌ์ ์ธ ์ผ์ค๋ง ์กฐ๊ธ ์๋ค๋ฉด ๋๊ตฌ๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค. ๋ฌผ๋ก ๊ทธ ๋ฐ๋๊ธ๋ถ๋ก ๋ณต์กํ ๋งคํฌ๋ก ์์ ์ ์์ฑํ๊ธฐ์ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๊ฑฐ๋ ์ฝ๋๊ฐ ๋ณต์กํ๊ฒ ๋๊ณ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๊ฒ ๋๋ค. ๋ฌผ๋ก ์ด๊ฑด ํ๋ก๊ทธ๋๋จธ๋ค์ ์ด์ผ๊ธฐ์ด๊ณ , ๊ฐ๋จํ ๋ง์ฐ์ค ํด๋ฆญ ๋ฐ๋ณต์์ ์ด๋ ํ๊ณ ์ ํ๋ ์ผ๋ฐ์ ์ธ ์ ์ ๋ผ๋ฉด ๋น์ฃผ์ผ ๋ฒ ์ด์ง๋ณด๋ค ์ฌ์ด AHK ๋ ์ ์ฉํ ํด์ด ๋๋ค.
ํ ๋ ์ด๊ฑธ๋ก ์จ๋ผ์ธ ๊ฒ์์ ์คํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ฌ๋๋ ์์์ง๋ง ์ง๊ธ์ ๊ฒ์๊ฐ๋ ๋ฑ์ ๋งํ์ ์๋์ด ์๋๋ค. ๋ฌผ๋ก ๊ฒ์๊ฐ๋๊ฐ ์๋ ์ธ์ฐ ํ๋ก๊ทธ๋จ, ์๋ฅผ ๋ค์๋ฉด ๋์๋ธ๋ก3 ๊ฐ์ ๋ฐ์์ ๋ฌด๊ธฐ๋ค์ ๊ฐํธํ๊ฒ ๊ตํํ๋๋ฐ ๋งค์ฐ ์ ์ฉ๋๊ณ ์๋ค.
AHK ๋ฅผ EXE ๋ฑ์ ์คํํ์ผ๋ก ์ปดํ์ผํ๋ ์ต์ ๋ ์๋๋ฐ ๋ฐ์ด๋ฌ์ค๋ก ํ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋๋
์ผ๋ก ๊ตฌ๋ฌธ์ ์ ์ฅํ๊ณ
ํ์์ผ๋ก ์คํํ๋ฉด DOS์ฐฝ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅ์ ํ๋ค.
์คํ ํซํค๋ผ๋ ์ด๋ฆ์ ๊ฑธ๋ง๊ฒ ์ด์์ฒด์ ๋จ์ถํค ์ง์ ์ ํนํ๋์ด ์๋ค. ์ํ๋ ๋๋ก ํค๋ฅผ ๋ณ๊ฒฝํ๊ณ .exe ํ์ผ๋ก ๋ง๋ค๋ฉด, ํด๋น ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์ฌ๋ผ๊ฐ ํ ์คํ์ด ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ ๋ชฉ์ ์ค ํ๋๋ ๋งคํฌ๋ก์ด๋ค. [์ถ์ฒ]
์ฝ๊ฒ ๋ง๋ ๋ค๊ณ ๋ง๋ AutoIt ๋ง ํด๋ BASIC ์ธ์ด์ ํํ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋นํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ๋ ๋ฐฐ์ฐ๊ธฐ ๋งค์ฐ ์ด๋ ค์ ๋ ๋ฐ๋ฉด, AHK ๋ ์ง๊ด์ ์ด๊ณ ๊ผญ ํ์ํ ๊ธฐ๋ฅ๋ง ๋ด์ ๋ ผ๋ฆฌ์ ์ธ ์ผ์ค๋ง ์กฐ๊ธ ์๋ค๋ฉด ๋๊ตฌ๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค. ๋ฌผ๋ก ๊ทธ ๋ฐ๋๊ธ๋ถ๋ก ๋ณต์กํ ๋งคํฌ๋ก ์์ ์ ์์ฑํ๊ธฐ์ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๊ฑฐ๋ ์ฝ๋๊ฐ ๋ณต์กํ๊ฒ ๋๊ณ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๊ฒ ๋๋ค. ๋ฌผ๋ก ์ด๊ฑด ํ๋ก๊ทธ๋๋จธ๋ค์ ์ด์ผ๊ธฐ์ด๊ณ , ๊ฐ๋จํ ๋ง์ฐ์ค ํด๋ฆญ ๋ฐ๋ณต์์ ์ด๋ ํ๊ณ ์ ํ๋ ์ผ๋ฐ์ ์ธ ์ ์ ๋ผ๋ฉด ๋น์ฃผ์ผ ๋ฒ ์ด์ง๋ณด๋ค ์ฌ์ด AHK ๋ ์ ์ฉํ ํด์ด ๋๋ค.
ํ ๋ ์ด๊ฑธ๋ก ์จ๋ผ์ธ ๊ฒ์์ ์คํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ฌ๋๋ ์์์ง๋ง ์ง๊ธ์ ๊ฒ์๊ฐ๋ ๋ฑ์ ๋งํ์ ์๋์ด ์๋๋ค. ๋ฌผ๋ก ๊ฒ์๊ฐ๋๊ฐ ์๋ ์ธ์ฐ ํ๋ก๊ทธ๋จ, ์๋ฅผ ๋ค์๋ฉด ๋์๋ธ๋ก3 ๊ฐ์ ๋ฐ์์ ๋ฌด๊ธฐ๋ค์ ๊ฐํธํ๊ฒ ๊ตํํ๋๋ฐ ๋งค์ฐ ์ ์ฉ๋๊ณ ์๋ค.
AHK ๋ฅผ EXE ๋ฑ์ ์คํํ์ผ๋ก ์ปดํ์ผํ๋ ์ต์ ๋ ์๋๋ฐ ๋ฐ์ด๋ฌ์ค๋ก ํ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
stdout := FileOpen("*", "w `n")
stdout.Write(msg)
stdout.Read(0)
sleep 5000
๋๋
FileAppend,Test Message`n,*
์ผ๋ก ๊ตฌ๋ฌธ์ ์ ์ฅํ๊ณ
For /F "tokens=*" %L in ('""%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script .ahk""') do @Echo %L
ํ์์ผ๋ก ์คํํ๋ฉด DOS์ฐฝ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅ์ ํ๋ค.
3. ์ฅ์ [ํธ์ง]
3.1. ๋์ด๋์ ์ ๊ทผ์ฑ[ํธ์ง]
์ฝ๋ค. ๋๋ถ๋ถ์ ๋ช
๋ น์ ์์ด๋ง ํ ์ค ์๋ค๋ฉด ๋ฐ๋ก ์ด๊ฒ ๋ฌด์จ ์ญํ ์ ํ๋์ง ์์๋ณผ์ ์๋ค. C์ธ์ด์์
์ฒ๋ผ ์ฝ๋ฉ์ ํ ์ ์๋ค๋ฉด, ์คํ ํซํค์์
๋ผ๊ณ ์ฝ๋ฉํ ์ ์๋ค. ๋น์ ๋ฌธ๊ฐ๊ฐ ๋ณผ๋ ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ Msgbox๋ฅผ "๋ฉ์์ง ๋ฐ์ค"๋ผ๊ณ ์ง๊ด์ ์ผ๋ก ์์๋ฃ๋๋ค.
๋ํ, ์ฒ๋ฆฌ ์์์ ๋ํด์๋ ๋น์ ๋ฌธ๊ฐ๊ฐ ์ดํดํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ฅ ์์์ ์๋๋ก ๊ตด๋ฌ๊ฐ๋๊น. C์ ๊ฒฝ์ฐ ํจ์๋ฅผ ๋ฐ๋ผ ์ด๋ํ์ง๋ง, ์คํ ํซํค๋ ๊ทธ๋ฐ๊ฑฐ ์๋ค.
C์์๋ ์ ์ค์ ๊ฑธ์ณ์ ์ฌ์ฉํด์ผํ๋ ๋๋ค ํจ์๋, ์คํ ํซํค์์ ํ ์ค๋ก ๊ฐ๋จํ๊ฒ ํํ ๊ฐ๋ฅํ๋ค.
#include <stdio.h>
int main(void)
{
printf("Hello world!");
return 0;
}์ฒ๋ผ ์ฝ๋ฉ์ ํ ์ ์๋ค๋ฉด, ์คํ ํซํค์์
Msgbox, Hello world!
๋ผ๊ณ ์ฝ๋ฉํ ์ ์๋ค. ๋น์ ๋ฌธ๊ฐ๊ฐ ๋ณผ๋ ํจ์ฌ ๊ฐ๊ฒฐํ๊ณ Msgbox๋ฅผ "๋ฉ์์ง ๋ฐ์ค"๋ผ๊ณ ์ง๊ด์ ์ผ๋ก ์์๋ฃ๋๋ค.
๋ํ, ์ฒ๋ฆฌ ์์์ ๋ํด์๋ ๋น์ ๋ฌธ๊ฐ๊ฐ ์ดํดํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ฅ ์์์ ์๋๋ก ๊ตด๋ฌ๊ฐ๋๊น. C์ ๊ฒฝ์ฐ ํจ์๋ฅผ ๋ฐ๋ผ ์ด๋ํ์ง๋ง, ์คํ ํซํค๋ ๊ทธ๋ฐ๊ฑฐ ์๋ค.
C์์๋ ์ ์ค์ ๊ฑธ์ณ์ ์ฌ์ฉํด์ผํ๋ ๋๋ค ํจ์๋, ์คํ ํซํค์์ ํ ์ค๋ก ๊ฐ๋จํ๊ฒ ํํ ๊ฐ๋ฅํ๋ค.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand((unsigned int)time(NULL));
int var = rand()%100+1; //(1๋ถํฐ 100์ฌ์ด์ ๋์๋ฅผ ์์ฑํ์ฌ var์ ์ ์ฅํ๋ค)
return 0;
}
Random, var, 1, 100 ;(1๋ถํฐ 100์ฌ์ด์ ๋์๋ฅผ ์์ฑํ์ฌ var์ ์ ์ฅํ๋ค)
3.2. ์ค์น์ ๊ฐํธํจ[ํธ์ง]
์คํ ํซํค์ ์ค์น๋ ๋ฌด๋ ค 10์ด ์ด๋ด. ์ฉ๋์ 2MB์ฆ์์ด๋ฉฐ, ๋ถ๋ด์์ด ๋น ๋ฅด๊ฒ PC์ ์ค์นํด์ ์ธ ์ ์๋ค.
4. ๋จ์ [ํธ์ง]
4.1. ๋ณด์[ํธ์ง]
๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋น์ทํ์ง๋ง, ์คํ ํซํค๋ ํนํ ์ฌํ๋ค. L๋ฒ์ ์คํ ํซํค๋ฅผ ์ด๋ค๋ฉด exeํ์ผ์ ์ด๊ธฐ(O)โ๋ฉ๋ชจ์ฅ์ ์ ํ์ ํ๋จ๋ถ์ ์์ค๊ฐ ์ ๋๋ผํ๊ฒ ๋ณด์ธ๋ค. ์ด์ธ์ ๋ฒ์ ์์๋ ๋์ปดํ์ผ๋ฌ ํน์ ์ฌ๋ฆฌ๋๋ฒ๊ฑฐ๋ฅผ ์ด์ฉํด ๋๊ตฌ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ซ์ ์ ์๋ค. ๊ทธ๋ฌ๋, ์ด๋ฅผ ๋ง๋ ํจํน ๋ฐ ๋๋
ํ๋ผ๋ ์์
์ด ํ์ฑํ ๋๊ณ , ์คํซ๋ ์ฌ์ฌ ์์ ์ง๋์ ๋ค์ด๊ฐ๋ ๋ฏ ํ์ผ๋.. ๊ทธ๋ฐ๊ฑฐ ์๋ค. ์ด๋ง์ ๋ ๋ฆฌ๋ฒ์ฑ ๊ณ ์์๊ฒ๋ ํตํ์ง ์๋ค. ๋ค๋ง ์คํ ํซํค๋ GPL ๋ผ์ด์ผ์ค ํ์ ๋ฐฐํฌ๋๊ณ ์์ผ๋ฏ๋ก, AHK2EXE๋ฅผ ์ด์ฉํด ์ปดํ์ผ๋ ์คํ ํซํค ์คํฌ๋ฆฝํธ๋ (์ปดํ์ผ ๊ณผ์ ์์ ์คํ ํซํค ์์ค์ฝ๋๊ฐ ํตํฉ๋๋ฏ๋ก) ์๋์ ์ผ๋ก GPL ์คํ์์ค ๋ผ์ด์ผ์ค๊ฐ ์ ์ผ๋์ด ์คํ์์ค๋ก ๊ณต๊ฐ๋ฅผ ํด์ผ ํ๋ค๋ ์ฃผ์ฅ์ด ์๋ค.
๊ทธ๋ ์ง๋ง GPL ๋ผ์ด์ ์ค์ ์ ํ์ด ์ง์ ํฌํจ๋์ง ์์ ์ฐ์ถ๋ฌผ์ GPL์ด ์๋์ด๋ ๋๋ค! ์ค์ ๋ก, GPL ๋ผ์ด์ ์ค ์ปดํ์ผ๋ฌ์ธ GCC๋ก ์ฐ์ถ๋ ํ๋ก๊ทธ๋จ์ GPL๊ณผ ๋ณ๊ฐ์ด๋ค. ์คํ ํซํค์์์ ๋ฐ์ด๋๋ฆฌํ๊ฐ ๋๋ค๋ฉด ํ๋์ ์คํ ํ์ผ์ ๋ฌถ์ด๊ฒ ๋๋ฉฐ, ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ํํ๊ฐ ์๋๋ฏ๋ก(๊ทธ๋ฆฌ๊ณ ๋ถ๋ฆฌ๋ถ๊ฐ๋ฅํ ์ํ์ด๋ฏ๋ก) ์ฐ์ถ๋ ํ๋ก๊ทธ๋จ์๋ GPL์ด ์ ์ฉ๋์ง ์๋๋ค. ๋ํ, ์คํฌ๋ฆฝํธ ์ธ์ด์์์ ์ปดํ์ผ์ ์ธํฐํ๋ฆฌํฐ์ ์คํฌ๋ฆฝํธ๊ฐ ํ๋์ exe๋ก ๋ฌถ์ด๋ ๊ฐ๋ ์ผ๋ก ์ค๋ช ๋๊ณค ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ ๋ํ ์์ ์ํํธ์จ์ด ์ฌ๋จ์ FAQ์์ GPL ์ ์ผ์ด ์ผ์ด๋์ง ์๋๋ค๊ณ ๋ฐํ๋ค. ํ๊ตญ์ด ๋ฒ์ญ
๋ํ, ์คํ ํซํค(1.0)์ ์ ์์ Chris Mallett๋ ์ปดํ์ผ๋ exe(์ฐ์ถ๋ฌผ)์ GPL์ ์ผ์ด ๋์ง ์๋๋ค๊ณ ๋งํ ๋ฐ ์๋ค[4]. ์ฆ, GPL ๋ผ์ด์ ์ค์ ๋ฒ์๋ ์คํ ํซํค(์ธํฐํ๋ฆฌํฐ)์ ์์ค ์ฝ๋(C++)์ ๊ทธ๋ก ์ธํด ๋์จ ์ฐ์ถ๋ฌผ(์คํ ํซํค ์ธํฐํ๋ฆฌํฐ, AutoHotkey.exe)์ ๊ฒฝ์ฐ์ด๋ฉฐ, ์ด๋ฅผ ์ด์ฉํ์ฌ ์ธํฐํ๋ฆฌํฐ์ ๋ฌถ์ฌ ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ GPL C++ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ๋น๋์ ๋ง์ฐฌ๊ฐ์ง๋ก GPL์ด ์๋์ด๋ ์ข๋ค๋ ๋ป์ด๋ค.
๊ทธ๋ ์ง๋ง GPL ๋ผ์ด์ ์ค์ ์ ํ์ด ์ง์ ํฌํจ๋์ง ์์ ์ฐ์ถ๋ฌผ์ GPL์ด ์๋์ด๋ ๋๋ค! ์ค์ ๋ก, GPL ๋ผ์ด์ ์ค ์ปดํ์ผ๋ฌ์ธ GCC๋ก ์ฐ์ถ๋ ํ๋ก๊ทธ๋จ์ GPL๊ณผ ๋ณ๊ฐ์ด๋ค. ์คํ ํซํค์์์ ๋ฐ์ด๋๋ฆฌํ๊ฐ ๋๋ค๋ฉด ํ๋์ ์คํ ํ์ผ์ ๋ฌถ์ด๊ฒ ๋๋ฉฐ, ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ํํ๊ฐ ์๋๋ฏ๋ก(๊ทธ๋ฆฌ๊ณ ๋ถ๋ฆฌ๋ถ๊ฐ๋ฅํ ์ํ์ด๋ฏ๋ก) ์ฐ์ถ๋ ํ๋ก๊ทธ๋จ์๋ GPL์ด ์ ์ฉ๋์ง ์๋๋ค. ๋ํ, ์คํฌ๋ฆฝํธ ์ธ์ด์์์ ์ปดํ์ผ์ ์ธํฐํ๋ฆฌํฐ์ ์คํฌ๋ฆฝํธ๊ฐ ํ๋์ exe๋ก ๋ฌถ์ด๋ ๊ฐ๋ ์ผ๋ก ์ค๋ช ๋๊ณค ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ ๋ํ ์์ ์ํํธ์จ์ด ์ฌ๋จ์ FAQ์์ GPL ์ ์ผ์ด ์ผ์ด๋์ง ์๋๋ค๊ณ ๋ฐํ๋ค. ํ๊ตญ์ด ๋ฒ์ญ
๋ํ, ์คํ ํซํค(1.0)์ ์ ์์ Chris Mallett๋ ์ปดํ์ผ๋ exe(์ฐ์ถ๋ฌผ)์ GPL์ ์ผ์ด ๋์ง ์๋๋ค๊ณ ๋งํ ๋ฐ ์๋ค[4]. ์ฆ, GPL ๋ผ์ด์ ์ค์ ๋ฒ์๋ ์คํ ํซํค(์ธํฐํ๋ฆฌํฐ)์ ์์ค ์ฝ๋(C++)์ ๊ทธ๋ก ์ธํด ๋์จ ์ฐ์ถ๋ฌผ(์คํ ํซํค ์ธํฐํ๋ฆฌํฐ, AutoHotkey.exe)์ ๊ฒฝ์ฐ์ด๋ฉฐ, ์ด๋ฅผ ์ด์ฉํ์ฌ ์ธํฐํ๋ฆฌํฐ์ ๋ฌถ์ฌ ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ GPL C++ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ๋น๋์ ๋ง์ฐฌ๊ฐ์ง๋ก GPL์ด ์๋์ด๋ ์ข๋ค๋ ๋ป์ด๋ค.
4.2. ์ธ์[ํธ์ง]
๋ฌธ๋ฒ์ ๋์ด๋๊ฐ ๋งค์ฐ ๋ฎ์ ๋๊ตฌ๋ ์ฝ๊ฒ ์ฝ๋ฉ์ด ๊ฐ๋ฅํ๊ณ ์ผ๋ถ ๋ชฐ์์ํ ์ฌ์ฉ์๋ค์ ์ํด ์ ์๋ ๊ฒ์ ํต ํํ์ ๋งคํฌ๋ก๊ฐ ๋์๋ค๋๋ ๊ฒ์ ์ฝ๊ฒ ๋ชฉ๊ฒฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํดํค๋๋ค์ ์ ์ ๋ฌผ์ด๋ผ๋ ์ธ์์ด ๊ฝค ํผ์ ธ์๋ ํธ์ด๋ค.
ํํธ ์์ ํ ์ฌ์ฉ์ฒ์ ๋ฌธ์ ๋๋ฌธ์ ์ผ๋ถ ๋ฐฑ์ ์์ ์คํ ํซํค๋ฅผ ๋ฐ์ด๋ฌ์ค๋ก์จ ์ก์๋ด๊ธฐ๋ ํ๋ค. ํ์ ๊ธฐ๋ฐ์ผ๋ก ์กํ๋ ๊ฒฝ์ฐ๊ฐ 90%์ธ๋ฐ, ์ด๋ฒ ์คํธ๋ ๋งฅ์ํผ๊ฐ์ ์ ๋ช ํ ๋ฐฑ์ ๋ค์๊ฒ๋ ๊ฐ๋๊ฐ๋ค ๊ฑธ๋ฆฌ๋ ์ฃผ์์๋ง. ๋ฐ์ด๋ฌ์ค ํ ํ์ ๊ฒ์ฌ๋ฅผ ํด๋ณด๋ฉด ๋ฉ์ฉกํ ์คํ ํซํค ํ์ผ์ด๋ผ๋ ์ ๊ฒ๋ ๋์ธ๊ฐ๋ถํฐ ๋ง๊ฒ๋ 10๊ฐ์ด์์ ๋ฐฑ์ ์ด ๊ฐ์งํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
ํํธ ์์ ํ ์ฌ์ฉ์ฒ์ ๋ฌธ์ ๋๋ฌธ์ ์ผ๋ถ ๋ฐฑ์ ์์ ์คํ ํซํค๋ฅผ ๋ฐ์ด๋ฌ์ค๋ก์จ ์ก์๋ด๊ธฐ๋ ํ๋ค. ํ์ ๊ธฐ๋ฐ์ผ๋ก ์กํ๋ ๊ฒฝ์ฐ๊ฐ 90%์ธ๋ฐ, ์ด๋ฒ ์คํธ๋ ๋งฅ์ํผ๊ฐ์ ์ ๋ช ํ ๋ฐฑ์ ๋ค์๊ฒ๋ ๊ฐ๋๊ฐ๋ค ๊ฑธ๋ฆฌ๋ ์ฃผ์์๋ง. ๋ฐ์ด๋ฌ์ค ํ ํ์ ๊ฒ์ฌ๋ฅผ ํด๋ณด๋ฉด ๋ฉ์ฉกํ ์คํ ํซํค ํ์ผ์ด๋ผ๋ ์ ๊ฒ๋ ๋์ธ๊ฐ๋ถํฐ ๋ง๊ฒ๋ 10๊ฐ์ด์์ ๋ฐฑ์ ์ด ๊ฐ์งํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
4.3. ๊ธฐ๋ฅ ์ ํ[ํธ์ง]
๋ฌธ๋ฒ์ ๋ ์ฝ๊ณ , ๋ ์ฝ๊ณ , ๋ ๋ ์ฝ๊ฒ ๋ง๋๋ ๋ฐ๋์ ์์ ๋๊ฐ ๋ฎ๋ค. ๋ผ์ดํธํ๊ฒ ์ฝ๋ฉํ๋ ์คํ ํซํค ์ ์ ์๊ฒ ์๊ด ์์ง๋ง, ์ค๋ฆฌ์ง๋ B๋ฒ์ ์ global ๋ช
๋ น๋ ์์ผ๋ฉฐ[5] ์ฝ๊ฐ ๊ฐ์ ๋ L๋ฒ์ ๋ Python๊ฐ์ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋นํด์ ํ์คํ ๋จ์ด์ง๋ค.
5. ๋ฒ์ [ํธ์ง]
- B: ์ต์ด ๊ฐ๋ฐ ๋ฒ์
- L: Lexikos๊ฐ ๋ง๋ ์๋ก์ด ๋ฒ์
- H: ์ ์ ๋ค์ด ๋ง๊ฐ์กฐ์ํจ ๋ฒ์ [6]
6. ์ฌ๋ด[ํธ์ง]
- ๊ตญ๋ด์ ๊ด๋ จ ์์ ์ด ์์ผ๋ฉฐ, ํด์ธ์๋ ์๋ค. ๋ค๋ง, ์๋นํ ์๋ ์ ์ง์ด์ง ์ฑ ์ด๋ฏ๋ก ์ค๋ น ์์ด๊ฐ ๋๋ค ํ๋๋ผ๋ ๊ณ ์๋ค ๋ชจ๋๊ฐ ์ถ์ฒํ์ง ์๋ ์ฑ . ์ธ๊ตญ ์คํ ํซํค ํฌ๋ผ๊ณผ ๊ตญ๋ด ์คํ ํซํค ๊ด๋ จ ์ฌ์ดํธ, ๋ธ๋ก๊ทธ์ ์ ๋ฆฌ๊ฐ ์ ๋์ด์๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ท์์ ๋ฐฐ์ฐ๋ ๊ฒ๋ ์ข๋ค.
- ๋ง์ ์ฌ๋๋ค์ด ๋งคํฌ๋ก ์ ์ ๋๊ตฌ๋ผ๊ณ ์๊ณ ์์ง๋ง, ๊ฐ๋ฐ์๊ฐ ๊ณต์ ํํ์ด์ง์ Script Language๋ผ๊ณ ์ง์ ์ ์ผ๋ก ์ ์ด๋์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ ์ธ์ด๋ผ๊ณ ๋ด์ผํ๋ค.
- ์ธํฐ๋ท ๊ฐ์ข๋ฅผ ๊ณ ๋ฅผ ๋์๋ ๋งคํฌ๋ก๋ฅผ ์์ฃผ๋ก ๊ฐ๋ฅด์น๋ ๊ฐ์ข๋ฅผ ํผํด์ผํ๋ค. ๋งคํฌ๋ก๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ๋งคํฌ๋ก๋ถํฐ ๋ง๋๋๊ฒ ์๋๋ค. ๊ธฐ์ด๋ถํฐ ์์๊ฐ์ผ์ง ์ ์๊ธฐ๊ฐ๋ ์งง๊ณ , ์ค์ ๋ก ์ ์์ด ์์ํ๋ค. ๋ง์ฝ ๋งคํฌ๋ก ๋จผ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋ค๋ฉด ๋๋์์ด ๋ฐ๋ ค์ค๋ ์ค๋ฅ์ ๋ฐ๋ค์์ ํค์ด๋์ค์ง ๋ชปํ ๋ฟ๋๋ฌ, ์คํ๋ ค ์ค๋ฅ๋ฅผ ์์ ํ๋๋ผ ์ ์๊ธฐ๊ฐ๋ ์ค๋๊ฑธ๋ฆฐ๋ค. ๋ณ์๋ ์ฐ์ฐ์์ ๊ฐ๋ ์ ๋นจ๋ฆฌ, ๋ง์ฐ์ค ํด๋ฆญ์ด๋ ํค๋ณด๋ ์ ๋ ฅ ๊ฐ๋ ์ ๋ฆ๊ฒ ์๋ ค์ฃผ๋ ๊ฐ์ข๋ฅผ ์ฐพ๋ ๊ฒ๋ ํ๋์ ํ.
๋จ, ์ด๋ฏธ ๋ค๋ฅธ ์ธ์ด๋ค์ ๋ค๋ฃจ์ด ๋ณด์๋ค๋ฉด ๊ฐ์ข๋ฅผ ๋ณผ ํ์๋ ์์ด ๊ณต์ ํํ์ด์ง ๋์๋ง์ ๊ตฌ๊ธ ๋ฒ์ญ๊ธฐ ๋๋ ค๋ณด๋๊ฒ ๋ ๋น ๋ฅด๋ค.[7]
- ์ธ์ด์ ์ปดํ์ผ๋ฌ์ ์์ค์ฝ๋๊ฐ ๋ชจ๋ ๊ณต์ ๋๊ณ ์๋ค. AHK๋ฅผ ์ ๋ง์ ๋ง๊ฒ ์์ ํด์ ์จ๋ ๋๋ค๋ ๋ป. ์ปดํ์ผ๋ฌ๋ฅผ ์์ ํด์ ์์ค ๋ณดํธ๋ฅผ ์ํด ๋๋ ํ๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- ์ธ์ด์ ํน์ฑ์ ํ ์ธ์ด์ ๋นํด ์๋ ๋ฉด์์ ๋จ์ด์ง๋ค. ์คํฌ๋ฆฝํธ ์ธ์ด์ผ ๋ฟ๋๋ฌ GUI ๊ธฐ๋ฐ ์ธ์ด๋ผ์ ์ด์ฉ ์ ์๋ ๋ถ๋ถ. ๋ง์ฝ ์๊ธฐ ํ๋ก๊ทธ๋จ์ด ์๋๋ฅผ ๊ทนํ์ผ๋ก ๋ฝ์๋ด์ผ ํ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ๋ค๋ฅธ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋๊ฒ ์ข๋ค. ์ฐธ๊ณ
- ๊ตญ๋ด์์ ์ธ์์ด ์ข์ง ๋ชปํ๋ค. ์๊ธฐ ์์ ํ๋ฏ์ด ๋งคํฌ๋ก, ํต ์ ์ ๋ฌธ์ ๋ก ์ธํด์ ์ธ์ด๋ก ์ทจ๊ธ์ ์ํด์ฃผ๋ ํธ. ๊ทธ๋์ ๋๋ถ๋ถ์ ์คํ ํซํค ๊ฐ๋ฐ์๋ค์ ๋ค๋ฅธ ์ธ์ด๋ก ์ ํฅ์ ํ๊ธฐ ๋ง๋ จ์ด๋ค. ๋ค๋ง, ์ด ๊ฒฝ์ฐ์ ๋ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ด '๋๋ฌด ์ด์ ๋ ์คํ ํซํค ๋ฌธ๋ฒ'์ ์ ์ํด๋ฒ๋ฆฐ ๋๋จธ์ง ๋ค๋ฅธ ๋นก๋นกํ ์ธ์ด๋ ๋ฐฐ์ฐ๊ธฐ ํ๋ค์ด์ง๋ค. ์ค์ ๋ก AHK โ C์ธ์ด ์์ผ๋ก ๋ฐฐ์ด ์ฌ๋์ด ์์ C์ธ์ด๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋๋ณด๋ค ์ธ๋ฏธ์ฝ๋ก , ๋น๊ต ์ฐ์ฐ์ ์ค์๋ฅผ ๋ง์ดํ๋ค.
- ๋์ด๋๊ฐ ์ฝ๋ค์ง๋ง ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ค๋ฅธ ์ ์ด ๋ง๋ค๋ณด๋ ๋ํดํ์ ๋ ๋ง๋ค.
:= ์ต์คํ๋ ์ ๊ณผ= ๋ฆฌํฐ๋ด์ ์ฐจ์ด๋ง ๋ด๋ ๊ทธ๋ ๊ณ ๋ด์ฅ๋ ๋ช ๋ น๊ณผ ์ฌ์ฉ์ ํจ์์ ํํ ์ฐจ์ด๋ ๋๋ค.[8] ๊ทธ๋์ v2 ๋ฒ์ ์์ ํ์ ํธํ์ฑ์ ๋ฒ๋ฆฌ๊ณ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์์ ํ ๊ณํ์ด๋ผ๊ณ ํ๋ค.
- ๋๋ช ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ค. ๋ค๋ง ํ๋ก๊ทธ๋๋ฐ ์ธ์ด AutoHotkey๋ ํจ์ฌ ๋จผ์ ์ธ 2003๋ ์ ๊ณต๊ฐ๋์๋ค. ๋ค์ด๋ฒ์์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฒ์ ๊ฒฐ๊ณผ์ ๊ฒ์์์๊ฐ ๋์์ ์ ์ ์ธ์ด ์คํ ํซํค์ ๊ฒ์์ ์ํํ๊ฒ ๋์ง ์๋๋ค. ๊ตฌ๊ธ์ ํตํด ๊ฒ์ํ๋ ๊ฒ์ ์ถ์ฒ.
- ์คํฌ๋ฆฝํธ ๋์ ๊ฐ๋จํ GUI๋ก ์ข ๋ ์ฝ๊ฒ ๋จ์ถํค๋ฅผ ์ค์ ํ ์ ์๋ ํ๋ก๊ทธ๋จ๋ ์๋ค. ์ด๋ฆ์ WindowexeReSendKey. ๋ค๋ง ์๋ฌด๋๋ AutoHotkey์ ๋นํ๋ฉด ์ปค์คํฐ๋ง์ด์ง์ ๋ฒ์๊ฐ ์ข ์ข๋ค.
7. ๋์๋ง ๋ฌธ์[ํธ์ง]
8. ์ปค๋ฎค๋ํฐ[ํธ์ง]
- AutoHotKey๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค: ์คํ ํซํค ๊ณต์ ํํ์ด์ง ์ตํ๋จ์ ์๋ด๋์ด์๋ ์ปค๋ฎค๋ํฐ์ด๋ค. ์ฌ์ค ์ปค๋ฎค๋ํฐ์ด์ง๋ง, ๊ณต์์ ์ผ๋ก ์ธ์ ๋ ์ผ์ด์ค. ์ ๊ท ํ์๊ฐ์ ์ ๋์ง ์๋ ์ํ์ด๋ค.
- ๋ฐฉ๊ฐ ์คํ์ด์ค: ์ ์ ์คํ ํซํค ์ปค๋ฎค๋ํฐ. ํ์์ด ์ง๋ฌธํ๋ฉด ์ด์์๊ฐ ์ง์ ๋ต๊ธ์ ๋ฌ์์ค๋ค. ์ด์์๊ฐ ์คํ ํซํค ๊ฐ์๋ฅผ ์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ฐ์์ ๋ํ ์ง๋ฌธ๊ธ๋ ์ฌ๋ผ์ค๋ ํธ. ํ๋จ์ ์คํ ํซํค ์ฐ๊ตฌ์์ ๋ค๋ฅด๊ฒ, ๊ฒ์ ๊ด๋ จ ๊ธ์ด ์ ํ ์๋ ๊ฒ๋ ํน์ง. ๊ฒ์๊ณผ ๋ฌด๊ดํ๊ฒ ์คํ ํซํค ์ธ์ด๋ฅผ ๊ณต๋ถํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ข์ ์ปค๋ฎค๋ํฐ์ด๋ค.
- ์คํ ํซํค ์ฐ๊ตฌ์: ๋ค์ด๋ฒ ์นดํ ํ์์ผ๋ก, ์ ๋ ๊ฐ์ ์ปค๋ฎค๋ํฐ๋ณด๋ค ํ๋ฐํ ํ๋์ ๋ณด์ด๋ ํธ์ด๋ค. ๊ฒ์ ๋งคํฌ๋ก์ ๊ด๋ จ๋ ๊ธ์ด ๋ง๋ค. ์ด์ ๊ด๋ จํด์ ์ด์์๊ฐ ๊ณต์ง๋ฅผ ์ฌ๋ ธ์์๋ ๋ถ๊ตฌํ๊ณ , ์ฌ์ ํ ๋๋ถ๋ถ์ ๊ฒ์์์์ ๋งคํฌ๋ก ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๊ธ์ ์ฌ๋ฆฐ๋ค. ์ด์์์ ์ ์์ด ๋ธํ์ง ๋ถํ๋ฌ๋ ๊ด๊ณ ๊ธ ์ ๋ฆฌ๋ ๋๋ฆฌ๊ฑฐ๋ ์๋๋ ํธ.
์์ ๋ฐฉ์์ฃผ์
[์์1] Gui, add, edit, x10 y10 w100 h20, ์
๋ ฅ
[์ถ์ฒ] ์คํ ํซํค ๊ณต์ ์ฌ์ดํธ https://autohotkey.com
[4] 'AutoHotkey๋ฅผ ์ด์ฉํ ๊ฒฐ๊ณผ๋ฌผ์ GPL์ ์ผ์ด ๋ฉ๋๊น?'์ ๋ํ Chris์ ๋ต๋ณ ์๋ฌธ: No, because the EXE doesn't contain AutoHotkey's source code. Therefore, when you distribute a compiled script, you're not distributing any GPL source, and thus your application isn't subject to the GPL unless you want it to be. In other words, when you build an app with AutoHotkey, there are no restrictions on selling it, nor do you have to release your script's source code. This is because it is similar in principle to having built the app with a GPL C++ compiler.
[5] Byref ์ฌ์ฉ
[6] ๋ฉํฐ์ค๋ ๋ ๊ฐ๋ฅ
[7] ์ฌ์ค ์๋์ ๊ณต์ ๋ฒ์ญ๋ ํ๊ตญ์ด ๋์๋ง์ด ์๋ค.
[8] ์ต์คํ๋ ์
์ ์์ ์ง์ด๋ฃ๋ ์์์ด๊ณ , ๋ฆฌํฐ๋ด์ ๋ฌธ์๋ฅผ ๊ทธ๋๋ก ๋์
ํ๋ ์์์ด๋ค.