기본 콘텐츠로 건너뛰기

10월, 2013의 게시물 표시

[리눅스]Ubuntu Proxy Server, Squid3(우분투 프록시 서버, 스퀴드3)

source:  http://www.withover.com/2012/02/ubuntu-proxy-server-squid3.html Ubuntu Proxy Server, Squid3 간단 설치  접근이 불가능한 사이트를 접근을 하기 위해 우리는 보통 프록시 서버(Proxy Server)를 통한다고 말한다. 프록시 서버를 이용한다는 개념은 내가 원하는 자료를 프록시 서버를 통해서 접근을 한다는 의미다. 일반 개념: 사용자 -----> 웹사이트 프록시 개념: 사용자 ----> 프록시 서버 ----> 웹사이트  사이트 차단의 기본 원리는 사용자가 접근하고 있는 곳의 주소를 가지고 차단을 한다. 그런데 사용자가 프록시 서버를 거치게 되면 사용자가 접근하고 있는 주소가 프록시 서버가 됨으로써 사이트 차단을 회피할 수 있게 된다.  프록시 서버를 이용함에 있어서 사이트를 회피 할 수 있다는 장점은 있지만, 프록시 서버를 통해서 사이트에 자신의 로그인 정보를 넣는 것은 위험하다고 한다. 자신의 행위가 프록시 서버에 다 기록이 남기 때문이다. 신뢰할 수 있는 프록시 서버가 없다면 자신만의 프록시 서버를 만들어 보자.  우분투에서 Squid3를 이용하여 프록시 서버를 구축하는 간단한 방법을 알아보자. 1. Squid3 설치 $ sudo apt-get install squid3 2. 원본 설정파일 보관을 위해서 config 파일 복제 $ sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original $ sudo chmod a-w /etc/squid3/squid.conf.original 3. vi로 설정 변경 $ sudo vi /etc/squid3/squid.conf  4. vi 편집 상태에서 외부 접근 허용하기. 대략 809라인. manager와 localhost만 접근을 허용한다는 의미를 설정 정보(2,3번째라인)에 #을 붙여 주석...

[private method test] Testing Private Methods with JUnit and SuiteRunner

source:http://www.artima.com/suiterunner/privateP.html Testing Private Methods with JUnit and SuiteRunner by Bill Venners May 24, 2004 Summary This article compares four different approaches to testing private methods in Java classes. M y very first use of JUnit was to build a conformance test kit for the ServiceUI API [ 1 ]. The purpose of a conformance test kit is to help ensure that alternate implementations of the same API are compatible with the API's specification. Because an API specification defines only the public interface of the API, not the API's implementation, a conformance test exercises only the public interface. In other words, a conformance test is a "black box" test. It treats the API under test as a black box, whose external interface can be seen, but whose internal implementation cannot. A conformance test of a Java API, therefore, need only access the public members of the packages and classes under test. There is no need to a...

[톰캣7 우분투에서 설정] Configure Tomcat7 in Ubuntu

source: http://stackoverflow.com/questions/13423593/eclipse-4-2-juno-cannot-create-a-server-using-the-selected-type-in-tomcat-7 cd /usr/share/tomcat7 sudo ln -s /var/lib/tomcat7/conf conf sudo ln -s /etc/tomcat7/policy.d/03catalina.policy conf/catalina.policy sudo ln -s /var/log/tomcat7 log sudo chmod -R 777 /usr/share/tomcat7/conf sudo ln -s /var/lib/tomcat7/common common sudo ln -s /var/lib/tomcat7/server server sudo ln -s /var/lib/tomcat7/shared shared

[우분투에서 ssh 로그인이 느린 문제 해결법] SSH: Takes a long time to login to remote server

이번 문제를 해결하면서, verbose의 힘을 알게 되었다. ssh를 통해 원격 서버에 접속을 하려는데, 로그인 프롬프트가 뜨기까지 30초 이상 걸리는 문제가 있다면, 아니, 어떠한 문제든지 해결을 하려면 verbose를 이용하자. ssh -v yourId@remoteServerDomainName.com 위와 같이 입력하면 분명 GSS관련 인증과 문제가 얽혀있음을 간파할 수 있다. 따라서 아래와 같이 해결해보자. 해결법: /etc/ssh/sshd_config의 파일에 들어가 다음 줄인 GSSAPIAuthentication에 해당하는 내용 중 yes를  no로 바꾸면 된다. 저장 후 ssh로 다시 접속해보자. 필자의 경우 OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012 를 사용하는데 데몬을 새로 띄우거나 할 필요가 없이 그냥 ssh로 재접속하면 새로 변경된 /etc/ssh/sshd_config 설정 기반으로 접속을 시도하더라.

[when Content assist doesn't work on eclipse of ubuntu] 우분투에서 자동완성기능이 안될 때

플랫폼: 우분투 12.04, 이클립스 케플러 위와 같은 플랫폼에서  이클립스의 자동완성 기능이 되지 않았다. 의심되는 내용은 아무래도, '한글 전환'으로 사용되는 ctrl+space 키 바인딩과의 충돌여부였다. 나의 경우엔 해당사항이 없었지만, 혹자는 키 바인딩 충돌을 해결하고 문제가 풀렸다고 한다. 그러나 나의 경우엔 해당 문제와 상관이 없었다. 왜냐하면 아무리 찾아도 ctrl+space를 사용하는 어떠한 기능도 찾을 수 없었기 때문이다. 물론 나의 내공이 얕아 못찾는 것일 수도 있기에 긴가민가한 상황이었다. 그런데 키바인딩 충돌 문제가 아니라고 확신하게된 계기가 있었는데, 큐브리드 브라우져에서의 자동완성 기능 ctrl+space임에도 불구하고 잘만 되었기 때문이다. 키바인딩 충돌이 아니라는 확신과 증거가 나타나니 10일이 지나도록 묵혔던 문제가 순식간에 해결되었다. 해결법은 아래와 같다. 해결법:충격적이지만, 아마 우분투 진영에서 ctrl+space가 언어간 전환키로 많이 사용되는 걸 간파했는지, 자동 완성 기능(content assist)의 키 바인딩을 기존 ctrl+space에서 다른 걸로 바꿔버렸다. (같은 버전의 경우)이클립스에 대고 alt+/ 를 쳐보면 아마 자동 완성이 될 것이다. 따라서, 위 사진처럼, alt+/가 익숙하지 않다면 ctrl+space로 키바인딩 값을 바꿔주자. 모든 문제가 해결될 것이다.

[ubuntu partition resize] root partition resize, enlarge root partition

source: http://askubuntu.com/questions/105721/resize-root-partition-from-home-partition-space-swap-in-the-middle http://www.howtogeek.com/114503/how-to-resize-your-ubuntu-partitions/ http://askubuntu.com/questions/60431/how-do-i-resize-root-partition http://askubuntu.com/questions/67916/increase-root-partition http://askubuntu.com/questions/24027/how-to-resize-a-ext4-root-partition-at-runtime http://ubuntuforums.org/showthread.php?t=1491192

[servlet context path, web application path, docbase, documentbase] from a Spring web application

source:  http://stackoverflow.com/questions/12236590/retrieving-the-servlet-context-path-from-a-spring-web-application Q: I would like to be able to   dynamically   retrieve the " servlet context path " (e.g. http://localhost/myapp   or   http://www.mysite.com ) for my spring web application from a Service spring bean . The reason for this is that I want to use this value in email that are going to be sent to users of the website. While it would be pretty easy to do this from a Spring MVC controller, it is not so obvious to do this from a Service bean. Can anyone please advise? EDIT: Additional requirement: I was wondering if there wasn't  a way of retrieving the context path upon startup of the application and having it available for retrieval at all time by all my services? A: If you use a ServletContainer >= 2.5 you can use the following code to get the ContextPath: import javax . servlet . ServletContext ; import org . spring...
상황이 아래와 같을 때: List<ArticleDO> articleDOList = ArrayList<ArticleDO>(); articleDOList.put(..).put(..)...; 다음은 왜 컴파일 에러가 나는가? List<ArticleVO> articleVOList = (List<ArticleVO>)articleDOList; 해결책은?  List<? extends Object> articleDOList = ArrayList<ArticleDO>(); articleDOList.put(..).put(..)...; List<ArticleVO> articleVOList = (List<ArticleVO>)articleDOList;

[서버구성] 톰캣만으로도 충분한데 아파치와 톰캣을 연동하는 이유?

source:  http://www.okjsp.net/bbs?seq=141964 Q: 로드밸런싱? 등을 위해 아파치와 톰캣을 분산서버로 두는것은 이해가 되는데 1대의 물리적인 서버에 아파치와 톰캣이 굳이 따로 떠서 돌리는게 의미가 있는지요? A:  톰캣만 죽을 경우, 서블릿엔진이 필요없는 페이지는 정상적으로 작동하겠죠. A:  아파치는 정적인 컨텐츠를, 톰캣은 서블릿엔진 역할을 하죠.   부하를 분산시켜주는 역할을 합니다.   간단하게 이야기하면 html,js,jpg등은 정적인 컨텐츠입니다. 반면 jsp등은 서블릿엔진을 거쳐야 하는 동적인 컨텐츠이죠.    개발할때는 못느끼지만 안정적인 서비스를 위해서 따로 돌립니다.   한마디로 톰캣이 처리할 필요가 없는 컨텐츠는 아파치가 처리해서 톰캣이 좀더 빨리 돌아갈 수 있게 하는거죠... source:  http://beautifulos.blogspot.kr/2008/10/blog-post.html Q: 아파치와 톰캣을 연동하는 이유 A: 톰캣 앞단에 아파치를 둠으로써 static 한 객체들(html 들이나 gif, jpg 등의 이미지 파일, css 파일 등) 로 인한 부담을 덜어주기 위해서 저런 구성을 쓰기도 하고 아니면 비싼 L4 대신에 아파치로 로드밸런싱을 할 용도로 많이 쓰이기도 하는 것 같습니다. 가끔 아파치와 뒷단 WAS 간의 연결을 담당하는 AJP에 병목 때문에 Load Test 시 문제가 발생 하기도 하지만요 ^^;

The Document Object Model (DOM) Tree

source : I want to know. Thanks you, original designer! It's useful especially when checking things on chrome console for debugging or developing.

세션아이디 session Id

source : http://jinuine.blogspot.kr/ A session ID is a unique number that a Web site's server assigns a specific user for the duration of that user's visit ( session ). The session ID can be stored as a cookie , form field, or URL (Uniform Resource Locator). Some Web servers generate session IDs by simply incrementing static numbers. However, most servers use algorithm s that involve more complex methods, such as factoring in the date and time of the visit along with other variable s defined by the server administrator. Every time an Internet user visits a specific Web site, a new session ID is assigned. Closing a browser and then reopening and visiting the site again generates a new session ID. However, the same session ID is sometimes maintained as long as the browser is open, even if the user leaves the site in question and returns. In some cases, Web servers terminate a session and assign a new session ID after a few minutes of inactivity. Session IDs, in t...

[JAVA] Reflection

source:  http://programmers.stackexchange.com/questions/123956/why-should-i-use-reflection Reflection is much slower than just calling methods by their name, because it has to inspect the metadata in the bytecode instead of just using precompiled addresses and constants. Reflection is also more powerful: you can retrieve the definition of a  protected  or  final member,  remove the protection  and manipulate it as if it had been declared mutable! Obviously this subverts many of the guarantees the language normally makes for your programs and can be very, very dangerous. And this pretty much explains when you would use it. Ordinarily, don't. If you want to call a method, just call it. If you want to mutate a member, just declare it mutable instead of going behind the compile's back. One useful real-world use of reflection is when writing a framework that has to interoperate with user-defined classes, where th framework author doesn't know wh...