TAGminecraft, 마인크래프트, 마인크래프트멀티장애, 마인크래프트멀티플레이, 마크lan접속안됨, 마크멀티, 마크멀티안됨, 마크멀티접속장애 Show 관련글
댓글 4 + 이전 댓글 더보기 댓글 비공개 댓글 남기기 윈도우키+Pause 키를 눌러 "시스템"에 들어간다. 만약 Pause키가 없는 경우, 윈도우키+R키를 눌러 control(제어판)을 실행, "제어판시스템 및 보안시스템"에 들어가준다. 좌측의 "고급 시스템 설정"에 들어간다. "고급" 탭의 "환경 변수" 버튼을 누른다. "시스템 변수" 리스트에서 "Path" 항목을 선택하고 "편집" 버튼을 누른다. "새로 만들기" 버튼을 눌러 자바가 설치되어 있는 경로(폴더)를 입력한다. (대부분 "%programfiles%\Java\JDK-1x.0.x\bin\"에 설치되어 있다.) "확인" 버튼을 누른다. 윈도우키+R 키를 눌러
3.1.2. 구동기 만들기[편집]구동기는 서버 구현 프로그램을 실행하는 명령어를 실행 가능한 배치파일로 만드는 것이다. @echo off
:start 를 추가하고 pause 아래에 goto start 를 추가하자. 명령문 (매개 변수) 명령문 설명 @echo off 프롬프트 메세지에 "C:\Windows\System32 >" 처럼 파일 경로가 출력되는 것을 끈다. :start goto 명령어에서 신호를 받았을 때 여기서부터 명령을 다시 시작한다. cls 콘솔에 출력된 모든 텍스트를 제거한다. -Dlog4j2.formatMsgNoLookups=true 1.17~1.18 전용. 심각한 보안 취약점 해결 1.18은 가능한 경우 1.18.1로 업그레이드 한다. 그렇지 못한 경우 이 인수를 넣는다. -Dlog4j.configurationFile=log4j2_112-116.xml 1.12 ~ 1.16.5 전용. 심각한 보안 취약점 해결 여기에서 다운로드 받은 뒤 서버 폴더에 넣고 JVM 인수 추가한다. -Dlog4j.configurationFile=log4j2_17-111.xml 1.7 ~ 1.11.2 전용. 심각한 보안 취약점 해결 여기에서 다운로드 받은 뒤 서버 폴더에 넣고 JVM 인수 추가한다. java -jar server.jar "server.jar" 라는 이름의 서버 구현물 파일을 Java로 실행한다.[18] -Xms2048M -Xmx2048M 서버를 실행하는 데 할당시킬 메모리 크기[19] pause 일괄적인 처리를 보류한다. 서버 종료시 화면이 갑자기 꺼지지 않아 유용하다. cls 콘솔에서 출력된 모든 텍스트를 제거한다. goto start :start 부터 명령을 다시 시작한다.
3.1.3. 방화벽 해제[편집]위의 방법대로 따라한다면 서버는 정상적으로 구동될테지만 본인 밖에 접속을 할 수 없을 것이다. 이를 해결하기 위해서는 방화벽을 해제해야 한다. 방화벽은 윈도우의 방화벽과 공유기의 방화벽이 존재하며, 윈도우의 방화벽을 열지 않으면 공유기에 방화벽을 열었다고 해도 멀티가 불가능 하나 윈도우의 방화벽을 열었다면 같은 공유기 내에서는 멀티가 가능하다. 포트 포워드나 DMZ로 공유기의 포트를 열 경우 보안이 취약해지기 때문에 장거리 멀티가 아니라면 윈도우 방화벽만 해제해 주자.[24] 3.1.3.1. 포트포워딩[편집]자신의 컴퓨터가 Wi-Fi 에 연결되지 않고 LAN 선이 모뎀이나 스위칭 허브에 연결되어 있거나 VPS 등의 호스팅 서비스를 사용하는 경우 패스. 하지만 LAN선이 라우터에 연결된 경우에는 아래 추가 절차가 필요하다. 장거리를 하고 싶다면 위에서 연 포트를 공유기에서도 열어주어야 한다. 모든 공유기 공통으로 공유기 페이지에 로그인해야되며 방법을 모르는 경우 공유기의 사용설명서를 읽어보면 된다. 공유기 제조사별로 방법이 천차 만별이니 문서에 모든 경우를 다 적기에는 어려움이 있다. 열심히 공유기의 포트 포워드나 포트 포워딩항목을 찾아보자 다만 iptime같은 사제 공유기 말고 통신사의 공유기라면 내부 포트를 제대로 지정할 수 없는 경우가 있는데[29] 통신사에 연락하거나 DMZ, S-DMZ, Twin-IP를 사용하거나 내부 포트에 맞춰주자. 모뎀을 사용하거나 이중 공유기이면 모든 모뎀, 공유기를 똑같이 설정해주어야 한다.[30] 공유기에서 컴퓨터로 할당되는 IP를 고정하는 것을 추천[31], 유동 IP이기 때문에 컴퓨터로 할당되는 IP주소가 바뀐다면 다시 설정해야 되기 때문이다. 포트포워딩 테스트[32] 간혹 공유기로 구축된 내부 네트워크와 서버 프로그램 자체에서 설정한 내부 네트워크 간 IP 설정이 달라[33] 127.0.0.1과 같은 루프백 IP로는 접근이 되는데, 외부에서 서버 접근이 안 되는 경우가 있다. 방화벽 설정, 공유기 포트포워드 설정 등등을 다 했는데 안 되면 환장할 노릇.
와 같이 컴퓨터 내부적으로 한 번 더 포트포워드를 해줘야 정상적으로 포트포워드가 작동해 외부에서 내부 서버로 접근이 가능해진다. VMware 같은 가상 머신을 이용하는 컴퓨터의 경우 발생하는 문제. 3.2. 리눅스 환경[편집]3.2.1. 자바 설치[편집]자바 설치법은 배포판의 종류에 따라 다르다. 3.3. 도메인 설정(공통)[편집]자신이 어떤 운영체제를 사용해도 도메인 설정을 하는 방법은 동일하다. 도메인이란 간단히 말해서 숫자로 된 아이피주소를 문자열로 바꿔주는 서비스인데 일단 아이피가 바로 노출되는 것 보단 보안에 효과가 있으며, 사용자들이 알기 쉬워 접근성을 올려 줄 수 있고, 서버의 특성을 나타내는 수단이다. 4. 개인 운영[편집]개인 운영이란 서버 호스팅을 이용하지 않고 본인 컴퓨터로 서버를 여는 것을 말한다. 5. 마인크래프트 서버 호스팅 업체[편집]마인크래프트 서버를 전문적으로 호스팅해주는 업체 역시 존재한다. Mojang 스튜디오(전 Mojang AB)에서 운영중인 Minecraft Realms이 있지만, 플러그인 사용이 불가능한 등 단점이 많아 친구들과 가볍게 플레이할 목적이 아니라면 불편할 수 있다. 6. 서버 설정[편집]아래에는 서버를 설정하는 방법을 서술한다. 6.1. server.properties[편집]자세한 내용은 server.properties 문서 를 의 번 문단을 의 부분을 참고하십시오.6.2. motd 설정[편집]Message of the Day. 마인크래프트의 멀티플레이에서 서버의 설명을 정하는 설정이다. server.properties에서 서버 motd를 정할 수 있다.[39] 7. 서버 구현물 목록[편집]이 문단은 현재까지 사용 가능하거나 개발이 중단된 다양한 종류의 서버 구현 프로그램을 소개한다. * 이름: 서버 구현 프로그램 이름
7.1. 바닐라 서버[편집]
제작사인 Mojang에서 개발하는 공식 서버 프로그램이다. 근거리 네트워크 망의 유저끼리만 접속되는 LAN 서버나, Mojang 사에서 호스트해주는 Realms와 달리 독립적인 서버 프로그램을 통해 여는 방식이라 유저가 자신의 컴퓨터로 서버를 호스팅 할 수 있다. 아래에 나열할 서버 프로그램들도 마찬가지. 멀티플레이를 많이 해보면 알다시피 서버의 기능을 풍요롭게 하는 요소로써 플러그인이 빠질 수 없는데, 바닐라 서버는 API가 존재하지 않아 플러그인을 적용할 수 없다. 즉, 화폐를 추가하거나 미니게임을 제공하는 등 플러그인이 제공하는 기능을 사용할 수 없고 기본적인 게임 요소만을 즐길 수 있다.[40] 따라서 플러그인을 사용하지 않는 생야생 서버[41]를 여는 경우에는 바닐라 서버가 가장 적합하다. 물론 다른 구동기들에 비해 최적화가 부족하다는 단점이 있어서, 생야생 서버를 연다고 해도 컴퓨터 사양이 넉넉하지 않거나 서버 규모가 큰 경우라면 다른 구동기를 사용하는 것이 훨씬 좋다. 그밖에 바닐라 서버는 정식으로 출시되지 않은 스냅샷 버전을 지원한다는 이점을 가지고 있다.
서버를 구축하는 방법은 여기를 참고. 7.2. Bukkit API[편집]플러그인 API의 일종이다. 아래 목록은 이 API를 제공하는 서버 구현 프로그램들이다. 7.2.1. Craftbukkit[편집]
DMCA 사태[45] 이후 Spigot팀이 프로젝트를 넘겨받아 유지되고 있는 상태이며, BuildTools를 사용하면 Spigot과 함께 Craftbukkit도 같이 내려받아진다. 여담으로 Craftbukkit보다 Spigot을 쓰는게 더 현명한 선택이다, 그 이유는 여기를 참고. 7.2.2. Spigot[편집]
장점이라면 빠른 업데이트를 예로 들 수 있는데, 프리릴리즈등 정식 출시되지 않은 버전들의 업데이트가 조금이라도 늦어질 경우, BuildTools를 통해 바로 개발 버전의 스피곳을 사용해볼 수 있는 경우가 많다. 7.2.3. Paper[편집]
7.2.4. Purpur[편집]
7.2.5. Sugarcane[편집]
7.2.6. Patina[편집]
7.2.7. Pufferfish[편집]
7.2.8. Mirai[편집]
7.3. 버킷 + 모드 서버[편집]아래 있는 버킷들은 포지 모드와 버킷 플러그인들 혹은 다른것들까지 동시에 지원하는 버킷들이다. 7.3.1. Cauldron (MCPC+)[편집]
7.3.2. SpongeForge[편집]
7.3.3. CatServer[편집]
7.3.4. Magma[편집]
7.3.5. Arclight[편집]
7.3.6. Mohist[편집]
7.3.7. Cardboard[편집]
7.4. 자체 API 기반[편집]아래 목록의 프로그램들은 Bukkit API와 독립적이므로 버킷 플러그인과 호환되지 않는다. 7.4.1. Forge[편집]
7.4.2. Fabric[편집]
7.4.3. SpongeVanilla[편집]
7.4.4. Minestom[편집]
7.4.5. Cuberite[편집]
7.4.6. Glowstone[편집]
7.5. 개발 중단된 프로젝트[편집]여기 서술되어 있는 버킷중 1.7 이상 버전에서 2021년 12월 10일 이전에 개발이 중단되거나 그 이후 log4j 취약점 패치를 받지 못한 버킷은 절대 쓰면 안된다. 7.5.1. Tuinity[편집]
7.5.2. TacoSpigot[편집]
7.5.3. Thermos[편집]
7.5.4. Kettle[편집]
7.5.5. Project Rainbow[편집]
7.5.6. Yatopia[편집]
7.5.7. Atom[편집]
7.5.8. Hotpur[편집]
8. 사건사고[편집]8.1. Craftbukkit DMCA 테이크 다운[편집]
8.1.1. 발단[편집]이 EULA 실시 이후 2014년 8월 21일, Craftbukkit 팀(이하 "버킷 팀") 의 리더인 EvilSeph 가 트위터를 통해 아래와 같이 글을 올림.
이에 마인크래프트의 수석 개발자인[87] Jens Bergensten 이 위 글에 대해 아래와 같이 답변함.
그리고 갑자기 버킷 팀의 총 책임자였던 Nathan Adams 가 아래와 같이 말함.
그리고 이어서
8.1.2. 전개[편집]발단 이후, 버킷 팀에 약 25% 의 코드를 제공한 사람인 Wesley Wolfe (이하 "울프") 가 Bukkit API 를 이용한 모든 사이트에 DMCA 테이크 다운을 요청했고, 울프의 요청에 따라 GitHub 링크와, 공식 사이트의 다운로드 서버, JavaDocs 서버가 다운되었다.
위의 원문을 해석한 것이다. 애매한 부분이 있다면 정확하게 수정해주길 바람.
울프의 신청으로 Bukkit API 를 사용한 버킷이 먼저 내려가게 되었고, 그 다음 Spigot, Cauldron 순으로 내려가게 되었다. 8.1.3. 결말[편집]이 DMCA를 피하는 과정에서 여러 프로젝트가 주목받았다. 또 서버 소프트웨어의 주도권이 Spigot으로 넘어감에 따라 전체적인 업데이트 속도가 향상되었다. [1] 단, 공유기를 사용 중이라면 공유기의 포트포워딩 설정을 통해 외부로 서버 포트를 개방해야 외부 유저들이 접속할 수 있다.[2] 용어에 대한 정의는 위키피디아에 나와있다.[3] 압축을 풀면 사용할 수 없다![요즘은] PaperMC도 많이쓰는 추세이다.[5] 또는 src 폴더[6] 포크본 구동기[7] 파일을 더블 클릭하는 것과 같은 행위.[8] 다만, 외국이어서 핑이 은근 심하기도 하고, 램 메모리 할당량이 1GB에다 플러그인도 제한적이다.[9] JDK(Java Development Kit)가 설치되어 있어도 작동한다. 이는 JDK에 JRE가 포함되어 있기 때문. 하지만 JRE가 용량을 더 적게 잡아먹으므로 모드 개발이라도 할 게 아닌 이상 JRE 설치가 권장된다. 1.16 기준으로 더이상 JRE를 지원하지 않는 버킷(Paper 등)이 많아졌으므로 JDK를 설치하는것이 좋다.[10] 1.16.5 기준으로 JDK 11 이상을 지원하는 버킷이 많아져 JDK 설치 페이지로 이동한다.[11] 더 빠르게 사용하고 싶다면 Adopt Open JDK를 사용하는것도 좋다. 일반 Java와 설치 방법은 같다.[12] 환경 변수가 설정 되었는지 확인하려면, 윈도우키+R 을 누른 후 cmd /k java --version 을 입력해보면 된다.[13] 이 폴더는 서버 월드, 플러그인, 설정 파일이 담길 폴더이므로 신중하게 정하자. 띄어쓰기나 기호가 없는 오로지 영문 만으로 된 폴더명을 추천한다.[14] 어떤 구현물을 써야 할 지 모르겠다면 여기를 클릭해서 확인해보자.[15] 배치 파일 이름은 무엇으로 해도 상관없다.[16] 단 이것은 호스팅 컴퓨터 기준이다. 서버를 연 컴퓨터로 마크를 하려면 최소 4G는 빼고 할당해야 한다.[17] 파일 이름과 확장자명을 올바르게 기입하지 않으면 서버가 켜지지 않는다.[18] Java를 설치했더라도 이 과정에서 Java가 잡히지 않거나, Java가 여러 버전이 깔려 있을 때는 설치된 경로에서 java.exe를 찾아 수동으로 지정해줘야 한다.[19] 플러그인이나 모드가 많거나 동시 접속자가 많으면 더 많은 램을 할당할 필요가 있다. M 대신 G를 사용해 기가바이트 단위로 할당 가능하다. 1G=1024M[20] 경고가 나온다면 무시하고 실행하면 된다.[21] .cmd도 된다.[22] windows10 기준 폴더 창 상단의 보기-옵션-보기-알려진 파일 형식의 파일 확장명 숨기기 박스 체크 해제하면 확장자가 보이는데 텍스트 파일 이름이 예를 들어 server.bat.txt 식으로 되어 사실상 확장자가 변경된 것이 아니라 이름만 변경된 경우이다. 뒤의 txt를 지우면 해결된다.[23] -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:TargetSurvivorRatio=90 -XX:+AggressiveOpts -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true 이것을 -Xmx와 -jar 사이에 넣으면 된다.[24] 윈도우 방화벽을 열어주어야 랜서버로 같은 공유기 내에서 멀티를 할 수 있는 것이다.[25] 아웃바운드는 내가 접속하는 것, 인바운드는 남이 접속하는 것을 의미한다.[26] 프로그렘을 선택해서 자바로 지정해주어도 된다. jre에 있는 java.exe를 지정하면 된다.[27] 모든 로컬 포트로 설정해도 되지만 포트를 적게 열어두는 것이 그나마 보안에 도움이 된다.[28] 1000-2000이런 식으로 범위로 지정해주어도 된다. 다만 그 범위에 설정한 포트가 포함되어 있어야 된다.[29] 한 LG공유기로 예를 들자면 내부 포트를 지정된 범위에서만 선택 가능하다. ex)스타크래프트 1234. 메일 P2P 1555등등등 이런 경우면 여기에 맞게 외부 포트도 설정해주고 윈도우 방화벽도 다시 설정해주어야 하며 버킷에서도 설정해주어야 한다.[30] 모뎀일 경우 통신사에 연락해야하는 경우가 많다.[31] 이것 역시 방법이 천차만별[32] 이 사이트에서 베드락 에디션 서버를 테스트하면 포트가 안열려있다고 나오지만 실제 접속해보면 문제 없이 접속되는 경우가 있다. 그리고 테스트할때는 서버가 실행되고 있어야 한다.[33] 한번 다르게 설정되었다면 아래 방법으로 해결될때 까지 절대 문제가 해결되지 않는다. 환장할 노릇[34] 데비안 계열은 apt-get, 레드햇 계열은 dnf 또는 yum, 아치 리눅스 계열은 pacman을 사용한다.[35] 일반인도 .kr이 들어간 도메인을 사용할 수 있다. 국가기관은 go.kr을 사용하며 go.kr은 일반인이 사용하지 못한다.[36] 한달에 한 번 갱신하여야 도메인을 계속 사용 할 수 있는데 비용은 무료이다. 기간이 다가오면 메일이 오니 참고하자[37] 새벽에만 서버를 운영하는 등.[38] 한때 하이픽셀이 이 호스팅 업체를 통해 운영되었으나 자체 운영으로 전환되었다.[39] 한국어로 작성하려면 인코딩 방식이 다르기 때문에 UTF-8 형식으로 작성해야 한다. 한글에서 유니코드로 바꾸는 방법은 여기로 가서 변환 해주도록 하자. 뿐만이 아니라 색을 입히고 출력 결과물을 미리 볼 수 있는등 편하게 설정 할 수 있다.[40] 다만 1.12.2부터 함수, 1.13부터 데이터팩 기능이 추가되면서 플러그인을 바닐라 기능으로 대체하는 것이 가능하니, 어느 정도 지식이 있다면 플러그인보다는 안정성이 높은 바닐라 서버를 사용하는 것을 추천한다.[41] 경제, RPG, 미니게임 등을 모두 배제하고 마인크래프트 본연의 야생 생존만이 유일한 장르인 서버[42] 예를 들어 필수 플러그인 중 하나인 WorldEdit은 PaperAPI를 기반으로 제작되어 Spigot에서는 실행되지 않는다.[43] 대부분의 서버에서는 Paper를 사용하지만, 최적화를 다루는 문서에서는 Purpur를 사용한다.[44] 2021년 8월 18일 기준으로 Paper와 Tuinity 팀이 병합되었다.[45] 원래는 CraftBukkit의 라이선스는 돈 주고 판매가 불가능한 라이선스였다. 모장이 버킷 개발팀을 인수가 거쳐서 라이선스 위반이 돼서 DMCA이 발동된 것[46] Git 저장소에 저장되어 있는 소스코드를 내려받아 프로그램을 컴파일하는 방법이다. 윈도우 환경에서는 Git Bash 프로그램을 설치해야 했으나 그냥 도스창에다 쳐도 알아서 Git를 다운받아 진행한다.[Log4j_패치안됨] 이 버킷은 1.7~1.8.9의 플레이어가 1.7.10 서버에 들어올 수 있는 버킷이다. 그러나 일반 버전도 ViaVersion이나 ProtocolSupport를 적용하면 최신버전까지도 지원할 수 있다. Log4j 패치가 안됐다!!! 그러므로 위에 있는 필수적인 Log4j 패치 명령문을 cmd 파일에다가 입력해주고 웬만하면 지인들과 플레이할때만 사용하자.[48] 라이센스 문제가 완전히 해결된 것은 아니다. 웨슬리 울프(Wesley Wolfe)가 요청한 테이크다운만 해결되었으며, 페이퍼버킷은 버킷 API를 링크하고 있고, GPLv3의 라이센스 전염 조항에 의해 버킷 API와 동일하게 GPLv3를 적용하고 소스 코드 전체를 공개할 의무가 있지만, 동시에 소스 코드가 비공개 (모장 소유) 인 바닐라 마인크래프트 서버 소프트웨어를 포함하고 있어 결과적으로는 GPLv3 조항위반이이다.[49] Paper에서 자체적으로 패치한 모래 복사 등도 허용 여부를 직접 설정할 수 있다.[50] 원래 이름은 MCPC+ 였지만 1.7 업데이트를 진행하면서 Cauldron으로 변경되었다.[51] Forge 서버 기반이라서 포지 모드를 적용할 수 있었다.[52] 현재 사이트 폐쇄됨[53] 공식 사이트에서는 1.9.4 이전 버전들은 현재 내려가 있다[54] 다운받은 파일 이름 끝부분은 Forge 호환버전을 의미한다.[55] sk89q, Craftbukkit 시절 WorldEdit 플러그인으로 유명해진 개발자. 현재 스펀지 개발에서 손을 뗀 상태.[56] 스펀지 공식 문서는 오픈 소스이며, 누구든지 번역에 참여할 수 있다. 현재 한글 번역이 진행중이다.[57] Sponge 플러그인 호환은 개발을 시도했다 중단하였다.[58] -EssentialsX 개발자[59] 현재 최신버전 지원은 개발중이라고 한다.[60] 2021년 11월 17일 1.16.5를 정식 출시하였다[61] 개발자가 곧 지원할 예정이라고 했다.[62] 최신 마인크래프트 버전도 패치하지 않으면 지원되지 않는 WorldEdit, Skript 등 플러그인도 완벽히는 아니지만 다른 하이브리드 버킷보단 잘 작동한다. 또한 자체적인 시스템을 추가하여 모드의 월드를 플러그인에 호환되도록 변환하는 시스템도 있다.[63] log4j 취약점이 수정된 업데이트가 출시되었다.[64] 이 플러그인 패치는 Mohist에서 해당 플러그인을 포크한 Github 에서 다운받아온다.[65] 모장이 개발한 마인크래프트 서버 소스코드[66] 이곳에서 받을 수 있는 클라이언트 설치파일로 포지서버 설치도 가능하다.[67] 예를 들어 WorldEdit, Dynmap등은 포지와 플러그인 버전이 모두 존재한다. WorldEdit은 플러그인이 기반이지만 Dynmap은 모드를 중점으로 두고 개발되었기 때문에 Dynmap 플러그인보다 Dynmap 모드가 훨씬 안정적이다.[68] 예를 들어 Forge는 Packet으로 모드를 받아올 수 있지만, Fabric은 Packet으로 받지 못해 모드가 적용되었는지조차 확인할 수 없다. 클라이언트를 제한하는 대부분의 서버에서 Fabric을 막는 이유다.[69][69] 하지만 Fabric API 인 핵이 Wrust 말고는 존재하지 않는다. 그리고 Wrust 마저 제대로 우회가 안되기 때문에 안티치트만 있으면 큰 영향은 없다[70] Glowstone보다 더 뛰어난 멀티쓰레드 환경이 구축되어있다. 월드뿐만 아니라 더 많은 부분이 멀티쓰레드로 설계되어있다.[71] 바닐라 서버를 기반으로 만들어진 여러 서버 프로그램이 있듯이 Minestom은 그러한 바닐라 서버와 같은 역할을 한다. 다만, 직접 프로그래밍할 것을 지향하는 오픈소스 라이브러리인 것이 차이점. |