최근 활발하게 개발되고 있는 GoormIDE 내부를 살펴보며 내부 구조를 대략적으로 파악해보고 이 활용에 대해서 포스팅 해본다.
Google Script, Koding 등 Web IDE 수준은 아직 로컬 IDE(IntelliJ, Eclipse, Visual Studio) 수준까지 따라가진 못했지만 환경이 갖춰져 있지 않는 환경에서 급하게 코딩할 수 있다는 점에서 그 활용 용도를 보여주고 있다.
그 중에서 국내에서 개발하고 있는 GoormIDE를 살펴보자. 심지어 오픈소스 프로젝트라 소스코드를 받아 수정하여 사용할 수 있다.
아직 프로젝트를 시작한지 얼마 안되서 그런지 Documentation은 친절하지 않고, node.js는 전혀 개발해본적이 없어 commit log만 슬쩍 보고 지나가본다.
현재 활발하게 facebook에서 활동을 하고 있는 중인데..
소개하고 있는 홈페이지를 들어가본다.
맙소사.. goorm.io를 들어가려고 goo까지 치고 엔터 눌렀다가 google에 들어가져버렸다.
다시..
화면은 이미 로그인 되어있는 것으로 보이지만, 실제 써보려고 하는 사람은 회원가입을 해야한다.
현재 클로즈 베타 서비스 중이라 베타서비스 신청 후, 조금 기다려보면 아래와 같은 메일이 날아온다!. 오오!!
신청 완료가 되었으니 얼른 들어가본다.
"나의 그룸IDE"를 누르면 들어갈 수 있다.
프로젝트 생성을 해본다.
나는 java 개발자이니 java 프로젝트로 생성.
외부에서 개발한 프로젝트도 import를 할 수 있다고는 하지만 현재 개발해둔 프로젝트가 없으므로 그냥 새로 만들었다.
요 샘플 코드를 보니 뭔가 실행해보고 싶어졌다.
뭐든 IDE를 셋업하고 나서는 Hello World를 찍는것이 정석이니 위 실행 버튼을 눌러본다..
오. 뜬다..
실행 후 뭔가 cli가 튀어나오니 뭔가 뒤져보려는 욕구가 불끈불끈 솟아오른다.
Linux 버전은 Ubuntu 13.04jeonhs0@Goorm:~/jeonhs0_test$ java -cp /goorm/workspace/jeonhs0_test/bin/ project/mainHello goorm!jeonhs0@Goorm:~/jeonhs0_test$ uname -aLinux Goorm 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxjeonhs0@Goorm:~/jeonhs0_test$ cat /etc/*-release*DISTRIB_ID=UbuntuDISTRIB_RELEASE=13.04DISTRIB_CODENAME=raringDISTRIB_DESCRIPTION="Ubuntu 13.04"NAME="Ubuntu"VERSION="13.04, Raring Ringtail"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 13.04"VERSION_ID="13.04"HOME_URL="http://www.ubuntu.com/"SUPPORT_URL="http://help.ubuntu.com/"BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"jeonhs0@Goorm:~/jeonhs0_test$
jeonhs0@Goorm:~/jeonhs0_test$ whoamijeonhs0jeonhs0@Goorm:~/jeonhs0_test$ sudo su -[sudo] password for jeonhs0:Sorry, try again.[sudo] password for jeonhs0:sudo: 1 incorrect password attemptjeonhs0 is not in the sudoers file.This incident will be reported.jeonhs0@Goorm:~/jeonhs0_test$
음 root 권한을 막혀있는 듯 하다.
ps -ef 로 돌려봤을때 별다른 프로세스는 없고....
위 결과를 봤을때, 서비스는 저기 어딘가 돌고 있고, nfs에 프로젝트 파일들만 올려다 주는 것 같다.jeonhs0@Goorm:~/jeonhs0_test$ dfFilesystem1K-blocksUsed Available Use% Mounted on/dev/xvda18125880 1360684 634576818% /none4 0 4 0% /sys/fs/cgroupudev 292488 8292480 1% /devtmpfs 60384 184 60200 1% /runnone 5120 05120 0% /run/locknone 301920 0301920 0% /run/shmnone 102400 0102400 0% /run/usergoormStorage:/goorm 8257024 1047424 679014414% /goormjeonhs0@Goorm:~/jeonhs0_test$ mount/dev/xvda1 on / type ext4 (rw)proc on /proc type proc (rw,noexec,nosuid,nodev)sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)none on /sys/fs/cgroup type tmpfs (rw)none on /sys/fs/fuse/connections type fusectl (rw)none on /sys/kernel/debug type debugfs (rw)none on /sys/kernel/security type securityfs (rw)udev on /dev type devtmpfs (rw,mode=0755)devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)none on /run/shm type tmpfs (rw,nosuid,nodev)none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)goormStorage:/goorm on /goorm type nfs4 (rw,proto=tcp,port=2049,addr=172.31.24.0,clientaddr=172.31.23.59)jeonhs0@Goorm:~/jeonhs0_test$
nfs에 있는 다른 디렉토리에는 접근이 안된다.
/etc/passwd 파일을 보니 내 계정정보가 없고, pam 설정들이 보이는거 보니, LDAP 과 같은 류에서 인증 정보를 받아오는 듯 하다.
jeonhs0@Goorm:~/jeonhs0_test$ ifconfigeth0 Link encap:Ethernet HWaddr 0a:f1:7d:cd:e8:20inet addr:172.31.23.59 Bcast:172.31.31.255 Mask:255.255.240.0inet6 addr: fe80::8f1:7dff:fecd:e820/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:164542 errors:0 dropped:0 overruns:0 frame:0TX packets:96108 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:184076429 (184.0 MB) TX bytes:157189121 (157.1 MB)Interrupt:26lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:1042 errors:0 dropped:0 overruns:0 frame:0TX packets:1042 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:287435 (287.4 KB) TX bytes:287435 (287.4 KB)jeonhs0@Goorm:~/jeonhs0_test$
172.x.x.x 로 나오는거 보니 cloud 서버인거 같다.
그럼 공인 IP는 무엇일까?
jeonhs0@Goorm:~/jeonhs0_test$ curl "http://www.hashemian.com/whoami/" | grep "Your IP"% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Your IP address is: <span style='background-color:yellow;font-size:22px;font-weight:bold;font-family:verdana;'>54.238.150.197</span>. You may be reaching this page from: <i>UNITED STATES</i> <small>[<a style="text-decoration:none;" href="/tools/google-yahoo-maps.php?country=UNITED STATES" title="Map it!">Map it!</a>]</small><p><hr width='50%'>• Other information about your connection:<br /><b>HTTP_USER_AGENT:</b> curl/7.29.0<br />100 23193 0 23193 0 0 24034 0 --:--:-- --:--:-- --:--:-- 24059
IP : 54.238.150.197
whois로 이 IP를 검색해보니..
amazon ec2로 서비스하는것을 확인할 수 있다..
근데 VM 하나를 받은거 치고는 뭔가 활용용도가 떨어진다.
사실 java 코딩을 여기서 지금 당장 해보고 싶은건 없고...
여기서 뭘 해볼 수 있을까...
하아.....
하아....
그러고 보니 여기에........
아악........
룸메이트랑 잠깐 이야기하고 화장실 갔다온 사이에 로그아웃 됐어.
session timeout이 너무 짧은거 같다..
일단 다시 로그인 하고..
tomcat이나 한번 띄워봐야겠다.
먼저 tomcat을 다운로드 받아본다.
아... shell 창에서는 ctrl+v가 안된다. ㅠㅠ
프랑스 장인의 손길로 하나하나 입력해서 tomcat을 다운로드 한다.
ec2에서 한국서버로 뭔가 다운받으려고 하니 좀 느린듯 하지만 참고 기다려본다.
jeonhs0@Goorm:~/jeonhs0_test$ wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz--2013-10-21 16:10:14--http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gzResolving apache.tt.co.kr (apache.tt.co.kr)... 121.125.79.185Connecting to apache.tt.co.kr (apache.tt.co.kr)|121.125.79.185|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 7955948 (7.6M) [application/x-gzip]Saving to: ‘apache-tomcat-7.0.42.tar.gz’100%[=====================================================================================================================================================================>] 7,955,948128KB/s in 53s2013-10-21 16:11:08 (146 KB/s) - ‘apache-tomcat-7.0.42.tar.gz’ saved [7955948/7955948]jeonhs0@Goorm:~/jeonhs0_test$
압축을 풀고.. 실행..
total 7800drwxrwx--- 5 jeonhs0 jeonhs0_test 4096 Oct 21 16:13 .drwx-----x 50 root root 4096 Oct 21 15:41 ..drwxr-xr-x 9 jeonhs0 goorm_user 4096 Oct 21 16:13 apache-tomcat-7.0.42-rw-r--r-- 1 jeonhs0 goorm_user 7955948 Jul 2 08:41 apache-tomcat-7.0.42.tar.gzdrwxrwx--- 3 jeonhs0 jeonhs0_test 4096 Oct 21 15:43 bin-rwxrwx--- 1 jeonhs0 jeonhs0_test 228 Oct 21 15:41 make-rwxrwx--- 1 jeonhs0 jeonhs0_test 335 Oct 21 15:41 project.jsondrwxrwx--- 3 jeonhs0 jeonhs0_test 4096 Oct 21 15:41 srcjeonhs0@Goorm:~/jeonhs0_test$ apache-tomcat-7.0.42/bin/startup.shUsing CATALINA_BASE: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_HOME: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_TMPDIR: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/tempUsing JRE_HOME: /usrUsing CLASSPATH: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jarjeonhs0@Goorm:~/jeonhs0_test$ ps -ef | grep tomcatjeonhs0 4546 1 69 16:14 pts/13 00:00:03 /usr/bin/java -Djava.util.logging.config.file=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/endorsed -classpath /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jar -Dcatalina.base=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42 -Dcatalina.home=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42 -Djava.io.tmpdir=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/temp org.apache.catalina.startup.Bootstrap startjeonhs0 4566 4382 0 16:14 pts/13 00:00:00 grep --color=auto tomcatjeonhs0@Goorm:~/jeonhs0_test$
오.. 실행이 잘 된다.....
........
..........
........
..........
.........
.......
잊고 있었다.
여기는 private network이라는것을..
tomcat을 접속할 방법이 없다......
내 컴퓨터 방향으로 reverse socket을 열어주는 방법이 있지만 그짓까진 하긴 싫고..
그냥 curl로 던져보는 정도로 만족한다.
jeonhs0@Goorm:~/jeonhs0_test$ curl http://localhost:8080<!DOCTYPE html><html lang="en"><head><title>Apache Tomcat/7.0.42</title><link href="favicon.ico" rel="icon" type="image/x-icon" /><link href="favicon.ico" rel="shortcut icon" type="image/x-icon" /><link href="tomcat.css" rel="stylesheet" type="text/css" /></head><body><div id="wrapper"><div id="navigation" class="curved container"><span id="nav-home"><a href="http://tomcat.apache.org/">Home</a></span><span id="nav-hosts"><a href="/docs/">Documentation</a></span><span id="nav-config"><a href="/docs/config/">Configuration</a></span><span id="nav-examples"><a href="/examples/">Examples</a></span><span id="nav-wiki"><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></span><span id="nav-lists"><a href="http://tomcat.apache.org/lists.html">Mailing Lists</a></span>..................
tomcat이 잘 뜨는 거보니.. 기분이 좋지만 웹브라우저로 열어볼 수 없는 HTML 소스코드가 다 무슨 소용이겠는가.
하지만 추후 이부분에 대한 보완이 있을꺼라고 믿고...
다음 테스트로 넘어가본다...
java project라면 빼먹을 수 없다는... 그..
maven!!
실제로 IDE에서 지원을 하진 않지만 maven을 한번 실행해본다.
먼저 maven을 다운로드 받아야한다.
아씨..
붙여넣기 안된다...
한자 한자 입력하는 장인의 손길이 필요하다.
jeonhs0@Goorm:~/jeonhs0_test$ wget http://apache.tt.co.kr/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz--2013-10-21 16:27:57--http://apache.tt.co.kr/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gzResolving apache.tt.co.kr (apache.tt.co.kr)... 121.125.79.185Connecting to apache.tt.co.kr (apache.tt.co.kr)|121.125.79.185|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 5494427 (5.2M) [application/x-gzip]Saving to: ‘apache-maven-3.1.1-bin.tar.gz’100%[=====================================================================================================================================================================>] 5,494,427132KB/s in 29s2013-10-21 16:28:27 (182 KB/s) - ‘apache-maven-3.1.1-bin.tar.gz’ saved [5494427/5494427]jeonhs0@Goorm:~/jeonhs0_test$ tar -xvf apache-maven-3.1.1-bin.tar.gz
압축까지 풀었으니 mvn을 실행해본다.
jeonhs0@Goorm:~/jeonhs0_test$ apache-maven-3.1.1/bin/mvn[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.187s[INFO] Finished at: Mon Oct 21 16:29:50 UTC 2013[INFO] Final Memory: 2M/9M[INFO] ------------------------------------------------------------------------[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy, pre-clean, clean, post-clean. -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException
잘 실행된다.
만족스럽다..
그럼 이제 maven 프로젝트를 만들어봐야겠다.
pom.xml부터 만든다.
드디어 Google IDE가 IDE라는 것이 빛을 보이고 있다.
XML 파일을 작성하는데 자동완성 따윈 껌으로 해주고 있다.
생각보다 XML 파일 작성하는데 자동완성이라는 껌따위 버려버리는 경우가 많은데, code highlighting도 잘 되어있다.
하지만 Java Web 프로젝트를 지원하지 않는 IDE에서 손으로 구성하는건 좀 짜증나는 일이긴 하다..
아.. shift+tab 키 없다... 실수로 tab 올린거 내리고 싶었는데..
ctrl+shift+오른쪽 방향키에 대한 매핑도 날 난처하게 한다.
아...... 이번엔 코딩하고 있는데 날 로그아웃 시키고 있다.
session timeout에 대한 정책을 어떻게 만들어 두었는지 의심이 된다.
하지만 난 굴하지 않는다.
?!
자동 저장 기능이 없는듯 하다..
IntelliJ를 오래 쓰다 보니... 저장하는게 습관이 되질 않아서일까..
코드가 날아갔다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
시봑 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
sample project를 만드는 과정에서도 우여곡절이 많다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그래도 굴하지 않는다.
비록 내가 "pom.xml부터 만든다."라는 글을 쓴지 30분이 지났지만......
난 ..... 굴하지 않을 것이다.
아 드디어 성공했다.
tomcat과 maven 디렉토리는 그냥 무시하자...
이제 maven으로 war 파일을 묶어본다.
이제 war를 만들었으니 tomcat에 배포를 해본다.jeonhs0@Goorm:~/jeonhs0_test$ apache-maven-3.1.1/bin/mvn war:war[INFO] Scanning for projects...Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.3/maven-war-plugin-2.3.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.3/maven-war-plugin-2.3.pom (8 KB at 9.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom (9 KB at 36.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/22/maven-parent-22.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/22/maven-parent-22.pom (30 KB at 86.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/apache/11/apache-11.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/apache/11/apache-11.pom (15 KB at 60.5 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.3/maven-war-plugin-2.3.jarDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.3/maven-war-plugin-2.3.jar (82 KB at 155.0 KB/sec)[INFO][INFO] ------------------------------------------------------------------------[INFO] Building gubug 0.0.1[INFO] ------------------------------------------------------------------------Downloading: http://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pomDownloaded: http://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom (998 B at 4.0 KB/sec)[INFO][INFO] --- maven-war-plugin:2.3:war (default-cli) @ gubug ---Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom (2 KB at 5.4 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven/2.0.6/maven-2.0.6.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven/2.0.6/maven-2.0.6.pom (9 KB at 33.7 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/5/maven-parent-5.pomDownloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/5/maven-parent-5.pom (15 KB at 59.8 KB/sec)Downloading: http://repo.maven.apache.org/maven2/org/apache/apache/3/apache-3.pom....................[INFO] Packaging webapp[INFO] Assembling webapp [gubug] in [/goorm/workspace/jeonhs0_test/target/gubug-0.0.1][INFO] Processing war project[INFO] Copying webapp webResources [/goorm/workspace/jeonhs0_test/src/main/webapp/WEB-INF] to [/goorm/workspace/jeonhs0_test/target/gubug-0.0.1][INFO] Copying webapp resources [/goorm/workspace/jeonhs0_test/src/main/webapp][INFO] Webapp assembled in [108 msecs][INFO] Building war: /goorm/workspace/jeonhs0_test/target/gubug-0.0.1.war[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 29.352s[INFO] Finished at: Mon Oct 21 17:01:00 UTC 2013[INFO] Final Memory: 5M/14M[INFO] ------------------------------------------------------------------------jeonhs0@Goorm:~/jeonhs0_test$ ls -al target/total 20drwxr-xr-x 4 jeonhs0 goorm_user 4096 Oct 21 17:01 .drwxrwx--- 7 jeonhs0 jeonhs0_test 4096 Oct 21 17:01 ..drwxr-xr-x 4 jeonhs0 goorm_user 4096 Oct 21 17:01 gubug-0.0.1-rw-r--r-- 1 jeonhs0 goorm_user 2276 Oct 21 17:01 gubug-0.0.1.wardrwxr-xr-x 2 jeonhs0 goorm_user 4096 Oct 21 17:01 maven-archiver
jeonhs0@Goorm:~/jeonhs0_test$ mv target/gubug-0.0.1.war apache-tomcat-7.0.42/webapps/gubug.warjeonhs0@Goorm:~/jeonhs0_test$ apache-tomcat-7.0.42/bin/startup.shUsing CATALINA_BASE: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_HOME: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_TMPDIR: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/tempUsing JRE_HOME: /usrUsing CLASSPATH: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jarjeonhs0@Goorm:~/jeonhs0_test$ ps -ef | grep tomcatjeonhs0 1697 1 73 17:06 pts/2 00:00:03 /usr/bin/java -Djava.util.logging.config.file=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/endorsed -classpath /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jar -Dcatalina.base=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42 -Dcatalina.home=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42 -Djava.io.tmpdir=/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/temp org.apache.catalina.startup.Bootstrap startjeonhs0 1717 1166 0 17:06 pts/2 00:00:00 grep --color=auto tomcatjeonhs0@Goorm:~/jeonhs0_test$
역시나 확인해볼 방법이 따로 없으므로 curl로 확인해보도록 한다.
jeonhs0@Goorm:~/jeonhs0_test$ curl http://localhost:8080/gubug/index.jspHello... This is Gubug Worldjeonhs0@Goorm:~/jeonhs0_test$
드디어 자바의 꽃인 maven으로 컴파일을 완료하였다.
눈물이 날 지경이지만 maven으로 멈출순 없으므로, gradle도 한번 돌려본다.
gradle을 무시해선 안된다.
아직 IntelliJ에서도 기본 제공이 아닌 plugin을 따로 설치해야하지만.
매우 매력적인 녀석이다.
먼저 gradle을 다운로드 해본다.
그래도 gradle 다운로드는 빠른편이다.
jeonhs0@Goorm:~/jeonhs0_test$ wget http://services.gradle.org/distributions/gradle-1.6-all.zip--2013-10-21 17:10:48--http://services.gradle.org/distributions/gradle-1.6-all.zipResolving services.gradle.org (services.gradle.org)... 207.223.250.26Connecting to services.gradle.org (services.gradle.org)|207.223.250.26|:80... connected.HTTP request sent, awaiting response... 301 Moved PermanentlyLocation: http://downloads.gradle.org/distributions/gradle-1.6-all.zip [following]--2013-10-21 17:10:48--http://downloads.gradle.org/distributions/gradle-1.6-all.zipResolving downloads.gradle.org (downloads.gradle.org)... 54.230.113.44, 54.230.114.78, 54.240.164.93, ...Connecting to downloads.gradle.org (downloads.gradle.org)|54.230.113.44|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 51393607 (49M) [application/zip]Saving to: ‘gradle-1.6-all.zip’100%[=====================================================================================================================================================================>] 51,393,60717.4MB/s in 2.8s2013-10-21 17:10:55 (17.4 MB/s) - ‘gradle-1.6-all.zip’ saved [51393607/51393607]jeonhs0@Goorm:~/jeonhs0_test$
그리고 unzip..
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋjeonhs0@Goorm:~/jeonhs0_test$ unzip gradle-1.6-all.zipThe program 'unzip' is currently not installed. To run 'unzip' please ask your administrator to install the package 'unzip'
아 unzip이 없다.
어쩌지... gradle에서는 zip파일밖에 안주는데...
어쩔수 없다...
내 컴퓨터에서 받아서 tar로 다시 압축해서 서버로 전송...
다행히 파일 업로드 기능이 있다...
........
.......
좀 느려도 참는다...
.........
?!!!!!
알수 없다...
파일 업로드 되고 있는거 맞겠지?
progress bar가 그냥 혼자 숨쉬고 있다.........
"10여분 뒤..... 결국 chrome은 인코딩마저 깨져있는 에러메시지를 뱉어내고 죽었다"
그래서 결국 내 컴퓨터에 apache를 켜서 wget으로 해결보았다...
40Mb 업로드 하는데 죽어버린...
gradle 압축을 풀고 실행해본다.jeonhs0@Goorm:~/jeonhs0_test$ wget http://pc.gubug.kr/gradle-1.6-bin.tar--2013-10-21 17:20:08--http://pc.gubug.kr/gradle-1.6-bin.tarResolving pc.gubug.kr (pc.gubug.kr)... 1.235.210.141Connecting to pc.gubug.kr (pc.gubug.kr)|1.235.210.141|:80... connected.HTTP request sent, awaiting response... 401 Authorization RequiredReusing existing connection to pc.gubug.kr:80.HTTP request sent, awaiting response... 200 OKLength: 43335168 (41M) [application/x-tar]Saving to: ‘gradle-1.6-bin.tar’100%[=====================================================================================================================================================================>] 43,335,1681014KB/s in 44s2013-10-21 17:20:53 (972 KB/s) - ‘gradle-1.6-bin.tar’ saved [43335168/43335168]jeonhs0@Goorm:~/jeonhs0_test$
jeonhs0@Goorm:~/jeonhs0_test$ gradle-1.6/bin/gradle:helpWelcome to Gradle 1.6.To run a build, run gradle <task> ...To see a list of available tasks, run gradle tasksTo see a list of command-line options, run gradle --helpBUILD SUCCESSFULTotal time: 10.459 secsjeonhs0@Goorm:~/jeonhs0_test$
잘 돌아가니 이것도 한번 maven과 똑같이 build.gradle 파일을 만들어 task를 실행시켜본다.
jeonhs0@Goorm:~/jeonhs0_test$ gradle-1.6/bin/gradle war:compileJava UP-TO-DATE:processResources UP-TO-DATE:classes UP-TO-DATE:warBUILD SUCCESSFULTotal time: 14.196 secsjeonhs0@Goorm:~/jeonhs0_test$
그리고 war 파일을 다시 한번 deploy 해본다.
jeonhs0@Goorm:~/jeonhs0_test$ apache-tomcat-7.0.42/bin/shutdown.shUsing CATALINA_BASE: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_HOME: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_TMPDIR: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/tempUsing JRE_HOME: /usrUsing CLASSPATH: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jarjeonhs0@Goorm:~/jeonhs0_test$ rm -rf apache-tomcat-7.0.42/webapps/gubug*jeonhs0@Goorm:~/jeonhs0_test$ ls apache-tomcat-7.0.42/webapps/docs examples host-manager manager ROOTjeonhs0@Goorm:~/jeonhs0_test$ mv build/libs/jeonhs0_test.war apache-tomcat-7.0.42/webapps/gubug.warjeonhs0@Goorm:~/jeonhs0_test$ apache-tomcat-7.0.42/bin/startup.shUsing CATALINA_BASE: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_HOME: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42Using CATALINA_TMPDIR: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/tempUsing JRE_HOME: /usrUsing CLASSPATH: /goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/bootstrap.jar:/goorm/home/jeonhs0/jeonhs0_test/apache-tomcat-7.0.42/bin/tomcat-juli.jarjeonhs0@Goorm:~/jeonhs0_test$ curl http://localhost:8080/gubug/index.jspHello... This is Gubug Worldjeonhs0@Goorm:~/jeonhs0_test$
잘 실행된다.
여기까지 GoormIDE의 간략한 소개와 GoormIDE에서 제공하지 않는 기능이지만 maven, gradle을 적용하는 방법을 소개하였다.
GoormIDE는 local IDE에서 구현되어있는 단축키나 자동완성, shell 제공과 같이 로컬에서 개발하는 정도 수준의 기능들이 세세하게 잘 들어가 있는 IDE 이다.
하지만 사용하는데 불편한점이 적진 않았다.
정리를 해본다.
1. 예기치 않은 Session Timeout..
IDE를 사용하는 중에도 별안간 세션이 죽어버리는 문제가 있었다.
후에 IDE를 사용할때는 이 세션 30초뒤에 죽일꺼라며 메시지 박스가 떴지만 해당 오류가 발생했을땐 뜨지 않았었다.
2. 자동저장
여러 로컬IDE(Eclipse, Visual Studio, IntelliJ)는 자동저장 기능을 제공하고 있다.
하지만 이 IDE에서는 제공하지 않는듯 하다.
3. CLI에서 copy & paste 불가능
아.. 이거 정말 불편하다.
4. VM환경이 private network 임
웹 개발에도 사용한다고 하면... 외부에서도 개인 VM에 접속해볼 수 있도록 해주었으면 좋겠다. 방법이 쉽지만은 않지만 하다못해 vpn으로 접속하든 뭐든.. 어떻게든 접속할 수 있었으면 좋겠다.
이 때문에 VM의 활용용도가 뚝 떨어지는 것은 사실이다.
5. Java에서 Web Template 프로젝트 제공
웹 개발을 지원한다면 이건 자연스럽게 제공할꺼라 믿는다.
6. 단축키의 불편함..
위에서 말했듯이 ctrl+shift+오른쪽 방향키가 IDE의 ctrl+오른쪽 방향키 와 duplicate되어 이벤트가 발생하고 있다.
shift+tab도 없어서 좀 아쉬웠다.
7. 필수 패키지가 설치되어 있지 않음
unzip과 같은 필수 패키지가 설치되어있지 않다.
사실 unzip밖에 못찾았지만 개발자들이 미처 확인하지 못한 패키지들이 있을꺼라 생각한다.
그냥 sudo 권한을 줄 수 있는 방안을 생각하는것도 나쁘진 않을것 같다.
내부적으로는 사용자별로 항상 같은 vm을 주는것 같지 않은데 mount directory를 잘 조정하면 sudo 권한을 줘도 상관이 없을꺼 같다는 생각을 조심스레 꺼내본다.
뭐 나름 리뷰라고 문제점을 잔뜩 적긴했지만.
GoormIDE는 최근 꾸준히 버그픽스, 기능 개선이 이루어지고 있으니, 이러한 문제들도 머지않아 고쳐질꺼라 믿는다.







