반응형

─━ IT ━─ 439

아파치 톰캣 (Apache Tomcat) 실행 속도 개선방법

대형 웹 어플리케이션 서버를 톰캣으로 돌릴 시 매우 느리다. 이 때 해주면 좋을만한 설정 세가지를 추천한다. ​ 1. web.xml 다듬기 web.xml 의 web-app 엘리먼트의 속성값으로 metadata-complete=“true”를 추가한다. web.xml 의 web-app 엘리먼트의 자식 요소로 엘리먼트를 추가한다. ​ 2. VM arguments 다듬기 적당한 메모리를 설정한다. VM argument 중, -Xss1024m 등 메모리를 지정하는 방법은 많다. ​ 3. 불필요한 자원 삭제 WAS에 불필요한 웹 자원이 많이 함유되어 있다면 가동 속도가 느려질 수 있다. 정리는 지속적으로 해야 된다.

─━ IT ━─ 2020.12.26

[Tomcat] JSP 파일에서 절대경로로 파일 경로 정하기

아파치 톰캣을 사용하여 스프링 프로젝트를 하던 도중 JSP 파일에서 톰캣 contextPath에 의해 절대경로를 주기 까다롭다는걸 깨달았다. 보통 Application Context Path는 매 프로젝트마다 규칙을 정하고 사용하지만, 개발자의 관심도 척도에 따라 Application의 Context Path를 루트 "/" (ROOT) 로 정하고 하는 경우가 많다. 자기가 주로 사용하는 어플리케이션을 루트로 보는 경우가 많은 것이다. IntelliJ, Eclipse IDEA 별로 Application Context Path를 설정하는 위치는 다르지만 일반적으로 다음과 같다. IntelliJ :: 프로젝트 별 Edit Configurations (Tomcat) -> Deployment -> Applicat..

─━ IT ━─ 2020.12.26

JSP에서 비동기 통신 ajax로 데이터 넘기기.

ajax를 이용하면 비동기 통신이 가능하다. 이것은, 페이지의 별다른 리로드 없이 현재 페이지의 상태는 유지한채 서버와 통신하여 데이터만 가져올 수 있는데 예를 들어 회원 가입을 할 경우 각 폼에 사용자가 입력을 한 후 ajax를 이용하여 액션을 취하면, 현재 입력 되어 있는 폼값은 그대로 유지한채 데이터만 통신하여 가져올 수 있다. ex > id 중복 체크 경우, 현재 페이지의 각 폼값은 그대로 유지한채, 액션이 취해지면 해당 액션에서 id 중복 체크 데이터 결과만 리턴 받을 수 있다. * 해당 jsp 페이지에서 폼 입력 view를 만들고, ajax 프레임워크를 import 시킨다. 관련 스크립트 파일은 자료실에 올려 놓았다.. ex> * 자바 스크립트를 이용하여 폼 데이터 전송 ex> var myAj..

─━ IT ━─ 2020.12.26

[iOS] 앱스토어 리젝 사유 분석 :: Guideline 2.1 - Information Needed

원인 1) 보통 잘못된 정보, 잘못된 메타데이터를 포함 2) 앱스토어 승인 후 메타데이터와 맞지 않게 변환 3) 숨겨진 기능 보유 4) 다른 앱과 유사한지 여부 5) 앱 안에 약관 내용 보유 X 6) 앱 안에 회원가입 보유 X ​ 해결방안 A) 필자 같은 경우 메일로 회신했다. 6번에 해당해서 앱 안에 회원가입이 없지만 로그인이 있는 시스템이여서 다음과 같은 메일이 왔고, 다음과 같이 회신했다. ​ 애플 리젝을 당하며 온 메일 ​ - Who is the target audience? - How do users obtain an account? ​ 파파고 번역 결과 ​ ​ ​ 내가 보낸 답변 메일 파파고 번역 결과 2 ​ ​ 이후 정상적으로 앱이 올라감을 알 수 있었다! ​ 심사 완료! 휴.. ​ 결론 앱..

─━ IT ━─ 2020.12.26

[Go언어] Golang에서 Hello World! 출력하기

Golang에서 Hello World 를 출력하는 방법은 간단하다. 일단 입출력을 위한 fmt 라이브러리가 필요하다. import "fmt" 를 해줘야 fmt 라이브러리의 Println() 함수를 사용할 수 있다. 해당 라이브러리를 통해 fmt.Println() 함수를 이용하면 텍스트 출력을 손쉽게 할 수 있다. 자바의 System.out.println() 함수 또는 C언어의 puts() 함수라고 생각하면 된다. (또는 파이썬의 print() 함수) package main import "fmt" // fmt 패키지 : 기본적인 입출력을 담당하는 패키지 // Golang은 기본적으로 세미콜론(;) 사용 안함 func main() { fmt.Println("Hello World") }

─━ IT ━─ 2020.12.25

[iOS] Cannot preview SwiftUI

​ ​ ​ 'Cannot preview in this file -- active scheme does not build this file. ' ​ 해당 에러는 iOS 개발에 Swift, SwiftUI를 사용하게 됬을 때 발생한다. ​ 해결하기 위해서는 몇가지 방법이 제시된다. ​ 1) 프로젝트 생성 시 Unit Test Option 해제 2) sudo xcodebuild -license 입력 후 라이센스 동의 3) iCloud Drive가 아니고, root 권한을 가지고 있는 로컬 폴더 생성 후 해당 폴더에서 작업

─━ IT ━─ 2020.12.25

[Maven] 메이븐 빌드 후 최종 war 파일 이름 정하는 방법

스프링 MVC 프로젝트를 로컬 개발 후, 리눅스 서버에 배포해야 하는 상황에서 war 파일 이름에 따라 동일한 이름을 가진 폴더가 생기기 마련이다. ​ 예외적으로 예약어로 설정된 파일 같은 경우는 경로가 조금 상이한데 예를들어 ROOT.war 는 Apache Tomcat WAS 경로에서 "/" 라는 Path 값을 지니고 있다. ​ 따라서, 도메인 주소가 만일 https://moretaran.com 으로 되어 있다면 ​ ROOT.war 같은 경우 https://moretaran.com 해당 주소로 연결될 것이고 ​ test1.war 같은 경우 https://moretaran.com/test1 해당 주소로 연결될 것이다. ​ 하지만 매번 mvn clean package 를 통한 빌드 산출물에 대한 이름을 번..

[Golang] 클로저 사용하기 (Closure)

GO 언어는 클로저를 지원합니다. 클로저는 함수 안에서 함수를 선언 및 정의할 수 있고, 바깥쪽 함수에 선언된 변수에도 접근할 수 있는 함수를 말합니다. 바깥 함수가 변수와 자기 자신(함수)을 에워싸고 (close over) 있다고 해서 클로저 (closure) 라고 합니다. 다음은 함수 안에서 함수를 선언하고 정의하는 방법입니다. func main() { sum := func(a, b int) int { return a + b } r := sum(1, 2) // 익명 함수 사용 fmt.Println(r) // 3 } 익명 함수는 일반적인 함수와는 달리 함수를 정의할 때 이름이 없습니다. 매개변수와 리턴값을 지정하는 방법과 함수를 호출하는 방법은 일반적인 함수와 같습니다. 단, 함수가 들어 있는 변수를 ..

─━ IT ━─ 2020.12.25

메이븐 프로젝트에서 js 및 css Minify(압축)하기

웹프로그래밍을 처음 시작할 때, js / css 파일들을 minify 해줘야한다는 생각은 1이라도 해보았지만, 실천한 적은 단 한번도 없었다. 왜냐하면 귀찮기도 하고, 이게 무슨 영향이 있나. 어차피 나만 잘보이면 되고, 클라이언트만 잘되면 되니까. 그런걸 고려한 적이 없었다. 하지만 장기적으로 생각해보았을 때 minify 해야되는 이유는 몇가지 되는 듯 하다. 1. 서버가 위치된 지역과 다른 지역의 유저가 해당 홈페이지로 접근할 때의 송신 속도 문제 2. 트래픽 최소화 문제 3. 로딩 속도 최적화 문제자바, 스프링 기반으로 된 프로젝트에서 js 및 css를 압축하는 일은 엄청 번거로운 일이다. 여기에 덧붙여 아파치 타일즈같은 레이아웃 라이브러리를 적용중이라면 파일 압축을 어떻게 해야할까? 문득 찾다보니..

반응형